แถบแอปช่วยให้คุณเพิ่มปุ่มสําหรับการดําเนินการของผู้ใช้ได้ ฟีเจอร์นี้ช่วยให้คุณใส่การดําเนินการที่สําคัญที่สุดสําหรับบริบทปัจจุบันที่ด้านบนของแอปได้ เช่น แอปเรียกดูรูปภาพอาจแสดงปุ่มแชร์และสร้างอัลบั้มที่ด้านบนเมื่อผู้ใช้กําลังดูรูปภาพ เมื่อผู้ใช้ดูรูปภาพแต่ละรูป แอปอาจแสดงปุ่มครอบตัดและฟิลเตอร์
พื้นที่ในแถบแอปมีจำกัด หากแอปประกาศการดําเนินการมากกว่าที่แถบแอปจะแสดงได้ แถบแอปจะส่งการดําเนินการส่วนเกินไปยังเมนูรายการเพิ่มเติม นอกจากนี้ แอปยังระบุได้ว่าการดำเนินการจะแสดงในเมนูรายการเพิ่มเติมเสมอแทนที่จะแสดงในแถบแอป
![รูปภาพที่แสดงแอป "พร้อมใช้งานใน Android" พร้อมไอคอนแถบการดำเนินการ](https://developer.android.google.cn/static/images/ui/notifications/actions_actionbar.png?authuser=0&hl=th)
เพิ่มปุ่มดำเนินการ
ปุ่มดำเนินการและรายการอื่นๆ ทั้งหมดที่มีอยู่ในเมนูรายการเพิ่มเติมจะกำหนดไว้ใน ทรัพยากรเมนู XML หากต้องการเพิ่มการดำเนินการลงในแถบการดำเนินการ ให้สร้างไฟล์ XML ใหม่ในไดเรกทอรี res/menu/
ของโปรเจ็กต์
เพิ่มองค์ประกอบ <item>
ให้กับแต่ละรายการที่ต้องการรวมไว้ในแถบการดำเนินการ ดังที่แสดงในไฟล์ XML ตัวอย่างเมนูต่อไปนี้
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
แอตทริบิวต์ app:showAsAction
ระบุว่าจะแสดงการดำเนินการเป็นปุ่มบนแถบแอปหรือไม่ หากคุณตั้งค่า app:showAsAction="ifRoom"
ไว้ การดำเนินการจะแสดงเป็นปุ่มหากมีที่ว่างเพียงพอในแถบแอป หากมีแถวไม่เพียงพอ ระบบจะส่งการดำเนินการส่วนเกินไปยังเมนูรายการเพิ่มเติม หากคุณตั้งค่า app:showAsAction="never"
เช่นเดียวกับการดำเนินการการตั้งค่าของโค้ดตัวอย่าง การดำเนินการจะแสดงในเมนูรายการเพิ่มเติมเสมอและไม่แสดงในแถบแอป
ระบบจะใช้ไอคอนของการดำเนินการเป็นปุ่มการดำเนินการหากการดำเนินการแสดงในแถบแอป คุณจะเห็นไอคอนที่มีประโยชน์มากมายใน Material Icons
ตอบสนองต่อการดำเนินการ
เมื่อผู้ใช้เลือกรายการใดรายการหนึ่งในแถบแอป ระบบจะเรียกใช้onOptionsItemSelected()
วิธีเรียกกลับของกิจกรรม และส่งออบเจ็กต์ MenuItem
เพื่อระบุรายการที่ผู้ใช้แตะ ในการใช้งาน onOptionsItemSelected()
ให้เรียกใช้เมธอด MenuItem.getItemId()
เพื่อระบุรายการที่ผู้ใช้แตะ รหัสที่แสดงผลจะตรงกับค่าที่คุณประกาศในแอตทริบิวต์<item>
ขององค์ประกอบandroid:id
ที่เกี่ยวข้อง
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้จะตรวจสอบการดำเนินการที่ผู้ใช้เลือก หากเมธอดไม่รู้จักการดำเนินการของผู้ใช้ ก็จะเรียกใช้เมธอดของซุปเปอร์คลาส ดังนี้
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }