ฉันพยายามทำบางสิ่งบางอย่างกับ ActionBar ใน Android
ฉันได้เพิ่มรายการใหม่ทางด้านขวาของแถบการกระทำ
ฉันจะเปลี่ยนด้านซ้ายของแถบการกระทำได้อย่างไร ฉันต้องการเปลี่ยนไอคอนและข้อความและฉันต้องการเพิ่ม "ปุ่มย้อนกลับ" ในแถบการกระทำสำหรับหน้าจออื่น
ฉันพยายามทำบางสิ่งบางอย่างกับ ActionBar ใน Android
ฉันได้เพิ่มรายการใหม่ทางด้านขวาของแถบการกระทำ
ฉันจะเปลี่ยนด้านซ้ายของแถบการกระทำได้อย่างไร ฉันต้องการเปลี่ยนไอคอนและข้อความและฉันต้องการเพิ่ม "ปุ่มย้อนกลับ" ในแถบการกระทำสำหรับหน้าจออื่น
คำตอบ:
มันง่ายมากที่จะทำสำเร็จ
หากคุณต้องการเปลี่ยนเป็นรหัสโทร:
setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);
และตั้งค่าเป็นอะไรก็ได้ที่คุณต้องการ
หรือในไฟล์ XML รายการ Android:
<activity android:name=".MyActivity"
android:icon="@drawable/my_icon"
android:label="My new title" />
วิธีเปิดใช้งานปุ่มย้อนกลับในแอปของคุณใช้:
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
ควรวางรหัสไว้ในของคุณonCreate
เพื่อให้การเปลี่ยนป้ายกำกับ / ไอคอนนั้นโปร่งใสสำหรับผู้ใช้ แต่ในความเป็นจริงมันสามารถเรียกได้ทุกที่ในระหว่างวงจรชีวิตของกิจกรรม
getActionBar().setHomeButtonEnabled(true)
ใช้ API ระดับ 14 หรือสูงกว่าหากคุณต้องการฟังก์ชั่นปุ่มย้อนกลับในรุ่นเก่าและ API ที่ใหม่กว่าที่คุณต้องการgetActionBar().setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowTitleEnabled(true)
supportActionBar?.title = "your title"
และมันก็จะต้องมีการทำในonResume
ไม่ได้อยู่ในเมื่อสร้างกิจกรรมด้วยonCreate
startActivity
ในการทำให้ไอคอนเดียวใช้งานได้โดยแถบการกระทำทั้งหมดของคุณคุณสามารถทำได้ใน Android Manifest ของคุณ
<application
android:logo="@drawable/Image">
...
</application>
pre-loads
ไอคอนไอคอนการตั้งค่าแบบโปรแกรมช้า!
คุณต้องเพิ่มโค้ด 3 บรรทัดนี้ แทนที่ไอคอนด้วยไอคอนของคุณเอง หากคุณต้องการสร้างไอคอนให้ใช้สิ่งนี้
getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
ในแนวทางการออกแบบวัสดุ Android 5.0 ไม่สนับสนุนการใช้ไอคอนใน actionBar
เพื่อเปิดใช้งานมันเพิ่มรหัสต่อไปนี้
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
เครดิตไปที่ผู้เขียนบทความนี้
หากคุณต้องการเปลี่ยนชื่อแถบการกระทำเพียงให้รหัส 1 บรรทัดต่อไปนี้ใน onCreate () ของกิจกรรมของคุณ
getActionBar().setTitle("Test");
คุณสามารถเปลี่ยนไอคอนได้โดยเพิ่มไอคอนใด ๆ ที่คุณต้องการลงในโฟลเดอร์ที่สามารถดึงได้จากนั้นเปลี่ยนบรรทัดนี้ในไฟล์ AndroidManifest.xml ของคุณ:
android:icon="@drawable/ic_launcher"
เพื่อให้ตรงกับชื่อไอคอนของคุณ หรือวางไอคอนของคุณเป็น ic_launcher หากเป็นไอคอนเดียวกัน สำหรับสิ่งที่กล่าวให้เพิ่มหรือเปลี่ยนแปลงสตริงที่ตรงกับที่อยู่ในไฟล์ res / values / strings.xml ของคุณ จากนั้นอีกครั้งในไฟล์ AndroidManifest.xml ให้เปลี่ยนบรรทัดนี้:
android:label="@string/app_name"
ไปยังสิ่งที่สตริงที่คุณมีในพวกเขา คุณจะต้องทำสิ่งนี้กับแอปพลิเคชั่นโดยรวมและกิจกรรมใดก็ตามที่คุณต้องการ แต่บรรทัดจะเหมือนกัน
หวังว่านี่จะช่วยได้
android:icon
ในแท็กกิจกรรมควรเป็นเท่าใด
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
คุณสามารถทำได้สองวิธี: XML หรือ Java ดูที่นี่: วิธีเปลี่ยนข้อความบนแถบการกระทำ
ดังนั้น:
XML:
<activity android:name=".Hello_World"
android:label="This is the Hello World Application">
</activity>
Java:
public class TitleBar extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
if ( customTitleSupported ) {
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
}
final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
if ( myTitleText != null ) {
myTitleText.setText("NEW TITLE");
// user can also set color using "Color" and then "Color value constant"
// myTitleText.setBackgroundColor(Color.GREEN);
}
}
}
setTitle(CharSequence text)
setTitle(int titleRes)
อย่าใช้requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)
จนกว่าคุณจะวางแผนที่จะแทนที่แถบหัวเรื่องทั้งหมดด้วยมุมมองที่กำหนดเองของคุณเอง
สำหรับชุดชื่อ :
getActionBar().setTitle("Title");
สำหรับชุดไอคอน :
getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);
ฉันใช้สายต่อไปนี้ภายในonNavigationItemSelected
:
HomeActivity.this.setTitle(item.getTitle());
เพิ่มรหัสด้านล่างภายในฟังก์ชั่น onCreate ในกิจกรรมของคุณ
setTitle("NewName");
งานนี้สำหรับฉัน:
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
โดยค่าเริ่มต้นชื่อแถบการกระทำจะใช้ป้ายกำกับของกิจกรรมปัจจุบัน แต่คุณสามารถตั้งค่าผ่านทางการเขียนโปรแกรมได้ ActionBar.setTitle()
ได้
หากต้องการใช้งานฟังก์ชั่นปุ่ม "ย้อนกลับ" (แม่นยำยิ่งขึ้น ")" ที่คุณกำลังพูดถึงอ่านส่วน "การใช้ไอคอนแอพสำหรับการนำทาง" ในคู่มือนักพัฒนา Action Barคู่มือสำหรับนักพัฒนาแอคชั่นบาร์
ในที่สุดเมื่อต้องการเปลี่ยนไอคอนคู่มือก็ครอบคลุมเช่นกัน กล่าวโดยย่อแถบการกระทำจะแสดงรูปภาพที่ให้มาในandroid:icon
รายการapplication
หรือactivity
องค์ประกอบของคุณหากมี วิธีปฏิบัติทั่วไปคือการสร้างไอคอนแอปพลิเคชัน (ในความหนาแน่นต่าง ๆ ทั้งหมดที่คุณต้องการ) ชื่อic_launcher.png
และวางไว้ในdrawable-*
ไดเรกทอรีของคุณ
ฉันพบnon-static method setTitle(CharSequence) cannot be referenced from a static context
ข้อผิดพลาดเนื่องจากฉันใช้setTitle()
ในคลาส PlaceholderFragment แบบคงที่ ฉันแก้ไขมันโดยใช้getActivity().getActionBar().setTitle("new title");
ไปที่รายการกิจกรรมเฉพาะที่คุณต้องการเปลี่ยนชื่อแถบการกระทำและเขียน android: label = "ชื่อเรื่อง"
ไปที่ไฟล์AndroidManifest.xml ค้นหา<application>
แท็กที่นั่นคุณสามารถเห็นแอททริบิว
android:label="@string/app_name"
ตอนนี้ไปที่res> values> strings.xml
เปลี่ยน
<string name="app_name">MainActivity</string>
ถึง
<string name="app_name">Your Desired Name</string>
ตัวอย่าง
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SubmitForm">
</activity>
</application>
strings.xml
<resources>
<string name="app_name">Your Desired Name</string>
<string name="action_settings">Settings</string>
</resources>
คุณยังสามารถทำสิ่งต่อไปนี้:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
setSupportActionBar(toolbar)
setTitle("Activity 2")
}
getSupportActionBar
getActionBar