Ancla el menú emergente sobre el botón de desbordamiento

Estoy tratando de crear un menú emergente personalizado que me gustaría posicionar en el botón de menú de desbordamiento de la barra de acción (estoy usando una Toolbar con setSupportActionBar() para esto si importa). Me enteré de que esto se puede hacer con el setAnchorView() (de la lectura del elemento de menú personalizado en el menú de desbordamiento ).

Sin embargo no puedo parecen averiguar cómo recuperar el menú de desbordamiento como una vista (que podría utilizar para establecer el ancla con).

También intenté anclar esto a la disposición del padre de la actividad sí mismo pero demostró para arriba en la tapa izquierda, y la altura del menú era igual a la altura de la barra de acción (que no es muy útil).

¿Alguien sabe cómo se puede lograr esto?

3 Solutions collect form web for “Ancla el menú emergente sobre el botón de desbordamiento”

En lugar de tener un menú de desbordamiento real que podría "engañar" un poco. Tiene un icono en la barra de acción que se parece al icono de desbordamiento. Debe establecer showAsAction siempre en este MenuItem . OnClick del icono de desbordamiento, muestra una ListPopupWindow que está anclada a la vista MenuItem . Si ListPopupWindow no aparece donde desea, puede llamar ListPopupWindow.setHorizontalOffset() y ListPopupWindow.setVerticalOffset()

Estoy de acuerdo con Andrew Orobator en que es más probable que va a tener que ser "falsa", pero yo recomendaría agregar una vista real a su barra de herramientas, en lugar de tratar de hacer frente a los elementos del menú:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="@dimen/elevation_med"> <ImageView android:id="@+id/overflow" android:layout_width="2dp" android:layout_height="2dp" android:background="@drawable/overflow_icon" android:layout_gravity="right"/> </android.support.v7.widget.Toolbar> 

De esta manera, puede obtener directamente la vista desde la barra de herramientas a través de toolbar.findViewById (R.id.overflow); O algo similar, y luego establecer la vista como su ancla. Esto significa que también tendrás que configurar tus propios oidores onClick, ya que ya no recibirán las devoluciones de llamadas de OnOptionsMenu (), pero creo que esta sería la mejor manera de manejar tu escenario.

Aprendí cómo obtener una vista desde un menuitem aquí: Android: Obtener una vista Referencia a un elemento de menú

  1. View v = findViewById(R.id.overflow) llamada View v = findViewById(R.id.overflow) dentro de su método onOptionsItemSelected .

  2. Utiliza esa vista como tu ancla en tu popupmenu: PopupMenu popupMenu = new PopupMenu(this, v);

  • Cómo obtener la posición de un elemento de un PopupMenu en un ListView personalizado
  • Creación de un menú de opciones emergentes en una barra de acción contextual
  • Mostrar menú emergente en el elemento `ActionBar` haga clic en
  • Cómo configurar el ID para los elementos del menú emergente, que se encuentra como id de la vista?
  • El elemento compatible con Android PopupMenu no se comprueba
  • Android cómo mostrar PopupMenu en webview como GMail
  • ¿Cómo puedo arreglar NoClassDefFoundError en Android para android.widget.PopupMenu?
  • Ocultar el elemento de popupmenu
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.