2012-12-05 15 views
7

szukam bezpłatnego sposobu na mentuItem.setShowAsAction(), tj menuItem.getShowAsAction() jak tam nie wydaje się być jeden.Android MenuItem Get metoda showAsAction

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

Jak muszę nagrać aktualny stan przed ustawieniem ich MenuItem.SHOW_AS_ACTION_NEVER, więc gdy orientacja urządzenia zmienia się z powrotem do góry mogę powrócić do pozycji menu do ich dawnego stanu.

muszę to zrobić jak plaster miodu nie daje nowy wiersz do pokazania kart jak w ICS. Tak więc w plastrze miodu nie ma wystarczającej ilości miejsca na zakładki.

Czy istnieje inna metoda GET uniwersalne właściwości w Java lub Androida znaleźć ustawienia w pliku XML dla showAsAction atrybutu w menuitem.

dzięki

+0

Znalazłeś coś? Szukam tej samej metody. – Peterdk

+0

Nie mogłem nic znaleźć. I to nie jest plaster miodu (jak testowałem go na urządzeniu Honeycomb w tym czasie), ale w rzeczywistości wpłynęło to na niektóre konfiguracje ekranu, takie jak tryb bardzo duży i portretowy. Ale w Honeycomb nie był w stanie zapamiętać stanu pozycji menu i odbudować go. – pt123

Odpowiedz

1

I okazało się, że klasa ma poniżej tej metody isActionButton()

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

Uwaga menuItem jest interfejsem, a nie klasa, z której miał przedmiot menuitem instancja została utworzona.

Jeśli korzystasz z pakietu zgodności android.support.v7, po prostu wyślij obiekt menuitem do MenuItemImpl.

Stało się tak:

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

Ponadto wspomniana klasa oferuje metody 'requestsActionButton()', 'requiresActionButton()' i 'showsTextAsAction()', które pomagają wykryć pogoda flagi 'SHOW_AS_ACTION_IF_ROOM',' SHOW_AS_ACTION_ALWAYS' lub 'SHOW_AS_ACTION_WITH_TEXT' są ustawione, a ty nie” Trzeba się bawić przy bitmaskach! – Taig

+0

@Taig Czy możesz wytłumaczyć, jak za pomocą tej metody uzyskać wartość flagi użytej w setShowAsAction()? – f470071

0

Można użyć tej metody, od tego, co zostało powiedziane w drugiej odpowiedzi:

@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; 
} 
Powiązane problemy