14

Ich möchte Schaltfläche mit Dropdown-Menü erstellen, wie Überlaufmenü-Schaltfläche in ActionBar auf ICS. Ich habe ein Problem, weil PopupMenu nicht in Android 2.x ist. Der zweite Weg mit Spinner ist aber nicht für mich, weil Spinner immer das erste Element auf meinem benutzerdefinierten Hintergrund oder mein ausgewähltes Element anzeigen. Wie kann ich es erreichen? Im Allgemeinen möchte ich ContextMenu aber wenig und auf Position geklickt anzeigen. Vielen Dank.Der beste Weg zum Erstellen Dropdown-Menü in Android 2.x wie in ICS

Es sieht wie folgt aus: Overflow menu in right top corner

Antwort

11

Wenn Sie eine Aktionsleiste neu erstellen möchten, können Sie sich das Projekt ActionBarSherlock ansehen, das diese Funktionen zurückführt.

Wenn Sie in der Lage sein möchten, ein solches Menü überall in Ihrer App aufzurufen, können Sie die Implementierung der Klassenimplementierung MenuPopupHelper im Projektquellcode ActionBarSherlock lesen.

+0

Ok. Ich denke, die beste Antwort ist deine. Aber ich entschied, dass ich nur Kontextmenü verwenden werde, da ich nicht einfach PopupMenu verwenden kann. –

1

Eine Alternative zu Ihrer Anforderung könnte sein, dass Sie eine Listenansicht erstellen ,, Position es unter Taste & gesetzt es Sichtbarkeit standardmäßig unsichtbar ist &, wenn Sie auf die Schaltfläche Taste können Sie die Sichtbarkeit der Listenansicht wechseln .... zum Beispiel

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); 
       } 

mich wissen lassen, ob das hilft ...

+0

Das ist ein guter Weg, es zu tun. Können Sie steuern, wo das ListView platziert wird? – Andy

+0

Sie können es positionieren, wo Sie möchten, aber ich denke, Sie müssen seine Abmessungen fest codieren. –

3

Ich verwende PopupWindow für diese Art von Sache. Es ist mehr Arbeit als ein PopupMenu, wo Sie einfach ein Menü geben und auf Ereignisse mit OnMenuItemClickListener.onMenuItemClick() reagieren. Mit einem PopupWindow stellen Sie eine Inhaltsansicht bereit und behandeln Klicks auf einer etwas niedrigeren Ebene.

Immer noch, es erledigt den Job ohne zu viel Mühe. Mit der Methode showAsDropDown() können Sie das Popup in einer anderen Ansicht verankern (entsprechend als Drop-down- oder Popup-Menü positionieren). Es ist seit API Level 1 und funktioniert gut für mich auf allen meinen Testgeräten.