2015-05-19 5 views
7

Ich mache eine Android-App, um Daten in einen RecyclerView mit einem ImageView als Überlauf-Schaltfläche zu laden. Wenn Benutzer darauf klicken, wird ein PopupMenu mit Optionen zur Auswahl angezeigt. Ich hatte es geschafft, es zu zeigen, aber die Position scheint nicht richtig zu sein. Bitte schauen Sie sich die Screenshots an.PopupMenu ist nicht richtig in RecyclerView positioniert

Nur die ersten beiden Elemente scheinen OK. Hier sind die Quellcode:

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    final PopupMenu popupMenu = new PopupMenu(context, view); 
    final Menu menu = popupMenu.getMenu(); 

    popupMenu.getMenuInflater().inflate(R.menu.menu_item_action, menu); 
    popupMenu.setOnMenuItemClickListener(onMenuItemClickListener); 

    switch (Global.listMode) { 
     case Global.LIST_STYLE_NORMAL: { 
     menu.findItem(R.id.action_delete).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_FAVORITE: { 
     menu.findItem(R.id.action_add_to_favorite).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_WATCH_LIST: { 
     menu.findItem(R.id.action_add_to_watch_list).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_DOWNLOAD: { 
     menu.findItem(R.id.action_download).setVisible(false); 
     break; 
     } 
    } 

    itemPosition = (int) view.getTag(R.id.tag_item_position); 
    popupMenu.show(); 
    } 
}); 

Können Sie Jungs zeigen mir die Frage, ich hatte Stunden gedauert hat für die Suche aber noch nichts gefunden, jetzt nach oben.

P/S: Die angeklickte Schaltfläche ist mit einem roten Kreis markiert.

Alle Hilfen würden geschätzt werden!

+0

Dies ist etwas, an dem ich auch für eine Anwendung arbeite, ist einer Ihrer Code für diese in einem öffentlichen Forum wie GitHub veröffentlicht? Ich versuche, den Menüpunkten Abschnitte zu geben (IE ein Bild auf der linken Seite, Name in der Mitte, Beschreibung auf der rechten Seite), aber ich habe Probleme herauszufinden, wie es geht. – Silmarilos

Antwort

10

Zum Glück habe ich festgestellt nur die Art und Weise, das Problem zu lösen:

  • Verwenden android.widget.PopupMenu nicht android.support.v7.widget.PopupMenu
  • final PopupMenu popupMenu = new PopupMenu(context, view); Ersetzen mit final PopupMenu popupMenu = new PopupMenu(context, v);

Ehrlich gesagt, ich weiß nicht, warum, Probieren Sie es einfach und voila!

+0

Aber funktioniert das mit älteren apis? –

+0

Es funktioniert für mich! –

+0

Die Dokumentation von 'PopupMenu' lautet:" Wird zum Schreiben von Apps verwendet, die auf Plattformen vor Android 3.0 ausgeführt werden. Bei Ausführung mit Android 3.0 oder höher wird diese Implementierung weiterhin verwendet; sie versucht nicht, zur Implementierung des Frameworks zu wechseln. " –

1

Ich bin nicht ziemlich sicher, aber scheint, dass ein ähnliches Problem ist duziert here und es hat bereits eine akzeptierte Antwort. Hoffe, es wird dir bei deinem Problem helfen. Ich bin gerade auf deine Frage gestoßen und habe das Thema gesehen, das im Link besprochen wurde und dachte, dass es vielleicht auch für dich hilfreich sein könnte.