Tôi đang sử dụng ActionBarSherlock. Tôi muốn có thể làm cho hai nút xuất hiện trong thanh hành động để đáp ứng với một hoạt động người dùng nhất định. Thao tác người dùng hoàn toàn không liên quan đến Thanh tác vụ. Khả năng hiển thị của các nút cần phải được kiểm soát bằng cách gọi một phương thức. Ngoài ra, phản hồi khi nhấp vào các nút đó sẽ được xử lý bằng mã ứng dụng của riêng tôi.ActionBarSherlock: Hiển thị/ẩn các nút Hành động theo chương trình thông qua một phương thức gọi
Các nút sẽ lý tưởng trông giống như các nút được tạo khi xác định các mục menu dưới dạng Mục tác vụ bằng cách sử dụng android:showAsAction="ifRoom|withText"
, như minh họa here.
Vấn đề của tôi là theo như tôi có thể nói, API ActionBar
tiêu chuẩn không cung cấp cơ chế như vậy để hiển thị hoặc ẩn các nút Hành động theo ý muốn và chỉ có thể xác định các mục menu trong phạm vi onCreateOptionsMenu()
được gọi bởi hệ thống.
Niềm tin của tôi là cách duy nhất tôi sẽ thêm các nút như thế này và hiển thị/ẩn chúng theo ý muốn là tạo bố cục tùy chỉnh cho chúng và sử dụng .setCustomView()
để đặt chúng vào Thanh tác vụ. Mọi người thường đồng ý với điều đó, hay có điều gì đó tôi đã bỏ lỡ?
Nếu tôi đi xuống tuyến đường sử dụng .setCustomView()
, tôi muốn các nút của tôi trông giống như các nút Hành động mục mà ActionBarSherlock hiển thị cho một mục menu có thuộc tính android:showAsAction="ifRoom|withText"
. Để làm điều này, bất cứ ai có thể tư vấn cho tôi mà chủ đề, phong cách, hoặc bố trí cụ thể từ bên trong thư viện ActionBarSherlock tôi nên sử dụng? Tôi đã cố gắng sử dụng R.layout.abs__action_menu_item_layout
, nhưng cố gắng thổi phồng bố cục này tạo ra ngoại lệ liên quan đến colorStateList
khi cố gắng lạm phát CapitalizingButton
bố cục chứa.
Cảm ơn, MH. Có một số ý tưởng ở đây mà tôi rất biết ơn. Vẫn còn một vấn đề khiến tôi băn khoăn liệu tôi có cần phải sử dụng '.setCustomView()' hay không. Vấn đề là tôi muốn nhãn văn bản hiển thị luôn, không chỉ biểu tượng. Trên HTC One X của tôi không có gì trên ABS ngoài biểu tượng tràn và một Mục Hành động, nhãn văn bản của Mục Hành động chỉ hiển thị ở chế độ ngang, mặc dù có đủ chỗ trong cả hai hướng. Tôi nhận thấy rằng Thanh tác vụ áp dụng logic dựa trên mật độ màn hình và chiều rộng thanh để xác định xem nhãn có hiển thị hay không. Tôi sẽ điều tra thêm một chút. – Trevor
Juse viết lại logic MenuItem của tôi trong Fragments bằng cách sử dụng lời khuyên bạn đã cung cấp - công trình MUCH tốt hơn bây giờ. Bất cứ ai đi theo cách này - hãy chắc chắn làm setHasMenuOptions (true) và đi theo con đường @MH. đề xuất (tôi làm cả onPrepareOptionsMenu và giữ tham chiếu đến đối tượng MenuItem). – kape123
"Cá nhân, tôi thích cách tiếp cận đầu tiên, vì bạn giữ tất cả các logic liên quan đến trình đơn được nhóm lại với nhau và khả năng hiển thị dựa trên một số loại trạng thái/mô hình." Có, cùng với mọi thứ khác, cùng nhau trong đối tượng thần, được gọi là Hoạt động. Và đối tượng thần là một mô hình chống. –