14

Chcę utworzyć przycisk z rozwijanym menu, np. Przycisk menu przepełnienia w ActionBar na ICS. Mam problem, ponieważ PopupMenu nie ma w Androidzie 2.x. Drugi sposób używania Spinnera, ale nie dla mnie, ponieważ Spinner zawsze pokazuje pierwszy element na moim niestandardowym tle lub wybrany przeze mnie element. Jak mogę to osiągnąć? Ogólnie rzecz biorąc, chcę mieć menu kontekstowe, ale mało i widok z kliknięciami pozycji. Dzięki.Najlepszy sposób na rozwijanie menu w Androidzie 2.x jak w ICS

Wygląda to tak: Overflow menu in right top corner

Odpowiedz

11

Jeśli Twoim celem jest odtworzenie paska akcji, możesz rzucić okiem na projekt ActionBarSherlock, który obsługuje te funkcje.

Jeśli chcesz mieć możliwość dodania takiego menu w dowolnym miejscu aplikacji, możesz przeczytać implementację klasy MenuPopupHelper w kodzie źródłowym projektu ActionBarSherlock.

+0

Ok. Myślę, że najlepszą odpowiedzią jest Twoja. Ale zdecydowałem, że użyję tylko menu kontekstowego, ponieważ nie widzę prostego sposobu na użycie popupMenu. –

1

Alternatywą do Państwa wymagań może być, że należy utworzyć widok listy ,, umieść go pod przyciskiem & ustaw jego widoczność na niewidoczny domyślnie & po kliknięciu na przycisk można przełączać widoczność ListView za .... np

button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (LISTVIEW.isShown()) { 
        LISTVIEW.setVisibility(View.INVISIBLE); 
       } else { 
        LISTVIEW.setVisibility(View.VISIBLE); 
       } 

dać mi znać, jeśli to pomaga ...

+0

To świetny sposób na zrobienie tego. Czy możesz kontrolować, gdzie jest umieszczony ListView? – Andy

+0

Możesz umieścić go w dowolnym miejscu, ale domyślam się, że będziesz musiał zakodować jego wymiary. –

3

Używam tego rodzaju rzeczy w przypadku PopupWindow. To więcej pracy niż menu podręczne, gdzie po prostu nadajesz mu menu i odpowiadasz na zdarzenia z OnMenuItemClickListener.onMenuItemClick(). Za pomocą PopupWindow udostępniasz treść Wyświetl i obsługuj kliknięcia na nieco niższym poziomie.

Mimo to wykonuje pracę bez większych problemów. Metoda showAsDropDown() umożliwia zakotwiczenie wyskakującego okienka do innego widoku (umieść je odpowiednio jako menu rozwijane lub wyskakujące), tak jak chcesz. Jest już od pierwszego poziomu API i działa doskonale na wszystkich moich urządzeniach testowych.