2012-12-05 26 views
7

Tôi đang tìm kiếm các phương pháp miễn phí để mentuItem.setShowAsAction(), ví dụ: menuItem.getShowAsAction() như có vẻ không phải là một.Android MenuItem Nhận Phương pháp showAsAction

http://developer.android.com/reference/android/view/MenuItem.html

Như tôi cần phải ghi lại hiện trạng trước khi đặt chúng vào MenuItem.SHOW_AS_ACTION_NEVER, vì vậy khi định hướng của thiết bị sẽ chuyển trở về cảnh quan tôi có thể trở lại các mục trong menu trạng thái cũ của họ.

Tôi cần làm điều này vì Honeycomb không cung cấp hàng mới để hiển thị các tab như trong ICS. Vì vậy, trong tổ ong không có đủ không gian cho các tab.

Có phương thức thuộc tính phổ dụng khác trong Java hay Android để tìm cài đặt trong XML cho thuộc tính showAsAction trong menuitem.

nhờ

+0

Bạn đã tìm thấy bất cứ điều gì? Tôi đang tìm phương pháp tương tự. – Peterdk

+0

Không thể tìm thấy gì. Và nó không phải là tổ ong (như tôi đã thử nghiệm nó trên một thiết bị Honeycomb tại thời điểm đó) nhưng nó thực sự ảnh hưởng đến cấu hình màn hình nhất định như cực lớn và trong chế độ chân dung. Nhưng trong Honeycomb nó không thể nhớ được các mục menu và xây dựng lại nó. – pt123

Trả lời

1

tôi phát hiện ra rằng lớp dưới đây có phương pháp này isActionButton()

android.support.v7.internal.view.menu.MenuItemImpl

Xin lưu ý rằng MenuItem là một giao diện và không phải là lớp mà đối tượng được cho là menuitem ví dụ đã được tạo.

Nếu bạn đang sử dụng gói tương thích android.support.v7, chỉ cần truyền đối tượng menuitem đến MenuItemImpl.

Nó được thực hiện như thế này:

((MenuItemImpl)item).isActionButton() 
+0

Hơn nữa lớp được đề cập cung cấp các phương thức 'requestsActionButton()', 'requireActionButton()' và 'showsTextAsAction()' giúp bạn phát hiện các cờ 'SHOW_AS_ACTION_IF_ROOM',' SHOW_AS_ACTION_ALWAYS' hoặc 'SHOW_AS_ACTION_WITH_TEXT' được thiết lập, và bạn không ' t phải fiddle xung quanh với bitmask! – Taig

+0

@Taig Bạn có nhớ giải thích một chút về cách sử dụng phương thức này giá trị của (các) cờ được sử dụng trong setShowAsAction() không? – f470071

0

Bạn có thể sử dụng phương pháp này, từ những gì đã nói trong câu trả lời khác:

@SuppressLint("RestrictedApi") 
private int getShowAsActionFlag(MenuItem item) { 
    MenuItemImpl itemImpl = ((MenuItemImpl) item); 
    if (itemImpl.requiresActionButton()) return MenuItemImpl.SHOW_AS_ACTION_ALWAYS; 
    else if (itemImpl.requestsActionButton()) return MenuItemImpl.SHOW_AS_ACTION_IF_ROOM; 
    else if (itemImpl.showsTextAsAction()) return MenuItemImpl.SHOW_AS_ACTION_WITH_TEXT; 
    else return MenuItemImpl.SHOW_AS_ACTION_NEVER; 
} 
Các vấn đề liên quan