Thanh ứng dụng cho phép bạn thêm các nút cho thao tác của người dùng. Tính năng này cho phép bạn đặt các thao tác quan trọng nhất đối với ngữ cảnh hiện tại ở đầu ứng dụng. Ví dụ: ứng dụng duyệt ảnh có thể hiển thị chia sẻ và tạo ở trên cùng khi người dùng nhìn vào thư viện ảnh của họ. Thời gian người dùng xem từng ảnh, ứng dụng có thể hiển thị thao tác cắt và bộ lọc.
Không gian trong thanh ứng dụng bị hạn chế. Nếu một ứng dụng khai báo nhiều thao tác hơn mức có thể trong thanh ứng dụng, thanh ứng dụng sẽ gửi các thao tác thừa đến một trình đơn mục bổ sung. Ứng dụng cũng có thể chỉ định rằng một hành động luôn hiển thị trong trình đơn mục bổ sung, thay vì hiển thị trên thanh ứng dụng.
![Hình ảnh thể hiện ứng dụng Now in Android với biểu tượng thanh thao tác](https://developer.android.com/static/images/ui/notifications/actions_actionbar.png?authuser=9&hl=vi)
Thêm nút hành động
Tất cả các nút hành động và các mục khác có trong mục bổ sung hành động
được xác định trong XML
tài nguyên trình đơn. Để thêm
thao tác vào thanh tác vụ, tạo một tệp XML mới trong tệp
Thư mục res/menu/
.
Thêm một
<item>
cho mỗi mục bạn muốn đưa vào thanh tác vụ, như được minh hoạ trong
tệp XML trình đơn mẫu sau đây:
<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>
Thuộc tính app:showAsAction
chỉ định liệu hành động có
được hiển thị dưới dạng một nút trên thanh ứng dụng. Nếu bạn đặt
app:showAsAction="ifRoom"
—như trong mã ví dụ
thao tác yêu thích – thao tác hiển thị dưới dạng một nút nếu có chỗ trong
thanh ứng dụng cho nội dung đó. Nếu không có đủ chỗ, những hành động vượt quá sẽ được gửi đến
trình đơn mục bổ sung. Nếu bạn đặt app:showAsAction="never"
như trong
hành động cài đặt của mã ví dụ—hành động luôn được liệt kê trong
trình đơn mục bổ sung và không được hiển thị trong thanh ứng dụng.
Hệ thống sẽ sử dụng biểu tượng của hành động làm nút hành động nếu hành động đó hiển thị trong thanh ứng dụng. Bạn có thể tìm thấy nhiều biểu tượng hữu ích trong Biểu tượng Material.
Phản hồi hành động
Khi người dùng chọn một trong các mục trên thanh ứng dụng, hệ thống sẽ gọi
của hoạt động
onOptionsItemSelected()
và truyền một
Đối tượng MenuItem
để cho biết mục nào đã được nhấn. Trong quá trình triển khai
onOptionsItemSelected()
, hãy gọi phương thức
MenuItem.getItemId()
để xác định mục nào đã được nhấn. Mã nhận dạng được trả về khớp với giá trị mà bạn
hãy khai báo trong phần tử <item>
tương ứng
Thuộc tính android:id
.
Ví dụ: đoạn mã sau đây sẽ kiểm tra hành động mà người dùng chọn. Nếu không nhận ra hành động của người dùng, phương thức này sẽ gọi lớp cấp cao phương thức:
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); } }