แถบแอปช่วยให้คุณเพิ่มปุ่มสำหรับการดำเนินการของผู้ใช้ได้ ฟีเจอร์นี้ช่วยให้คุณใส่ การดำเนินการที่สำคัญที่สุดสำหรับบริบทปัจจุบันไว้ที่ด้านบนของแอปได้ เช่น แอปสำหรับเรียกดูรูปภาพอาจแสดงปุ่ม แชร์และ สร้างอัลบั้มที่ด้านบนเมื่อผู้ใช้กำลังดูม้วนฟิล์ม เมื่อผู้ใช้ดูรูปภาพแต่ละรูป แอปอาจแสดงปุ่ม ครอบตัดและ ฟิลเตอร์
พื้นที่ในแถบแอปมีจำกัด หากแอปประกาศการดำเนินการมากกว่าจำนวนที่สามารถใส่ในแถบแอปได้ แถบแอปจะส่งการดำเนินการที่เกินมาไปยังเมนู ล้น แอปยังระบุได้ว่าการดำเนินการควรแสดงในเมนูรายการเพิ่มเติมเสมอแทนที่จะแสดงในแถบแอป
เพิ่มปุ่มดำเนินการ
ปุ่มดำเนินการและรายการอื่นๆ ทั้งหมดที่พร้อมใช้งานในเมนูที่ล้นของการดำเนินการจะ
กำหนดไว้ในทรัพยากรเมนู
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
ตอบสนองต่อการดำเนินการ
เมื่อผู้ใช้เลือกรายการใดรายการหนึ่งในแถบแอป ระบบจะเรียกใช้เมธอด Callback onOptionsItemSelected() ของกิจกรรมและส่งออบเจ็กต์ MenuItem เพื่อระบุรายการที่แตะ ในการติดตั้งใช้งาน onOptionsItemSelected() ให้เรียกใช้เมธอด MenuItem.getItemId() เพื่อกำหนดรายการที่แตะ รหัสที่ส่งคืนจะตรงกับค่าที่คุณ
ประกาศในแอตทริบิวต์
android:idขององค์ประกอบ<item>ที่เกี่ยวข้อง
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้จะตรวจสอบการดำเนินการที่ผู้ใช้เลือก หากเมธอดไม่รู้จักการดำเนินการของผู้ใช้ เมธอดจะเรียกใช้เมธอดของคลาสระดับบน
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); } }