¿Por qué está el menú desplegable de desbordamiento encima de la barra de acción?

Lista desplegable en la parte superior de la barra de acciones

¿Por omisión no se supone que está bajo la barra de acción? Entonces, ¿qué estoy haciendo mal?

@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } 

Res / menu / main.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.test.MainActivity" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never"/> </menu> 

De acuerdo con las especificaciones de diseño de material , el menú de desbordamiento debe aparecer en la parte superior de la barra de acción:

Un menú es una hoja de papel temporal que siempre se superpone a la barra de aplicaciones, en lugar de comportarse como una extensión de la barra de aplicaciones.

Introduzca aquí la descripción de la imagen

Este es el comportamiento predeterminado para las aplicaciones de Android Lollipop, así como para cualquier aplicación que utilice la biblioteca de soporte AppCompat v7.

Este es el comportamiento predeterminado del tema AppCompat que está utilizando. De acuerdo con las directrices de Diseño de Material, se espera que el menú de desbordamiento aparezca en la parte superior de su ancla, el ActionBar.

Puede forzarlo a que se muestre debajo de la barra de acción si, configurando el tema overlapAnchor a false

  <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow" > <item name="overlapAnchor">false</item> <item name="dropDownVerticalOffset">?attr/actionBarSize</item> </style> 

Finalmente esto funciona para mí:

 <resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light" /> <style name="AppTheme" parent="AppBaseTheme"> <item name="actionOverflowMenuStyle">@style/OverflowMenu</item> </style> <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow"> <!-- Required for pre-Lollipop. --> <item name="overlapAnchor">false</item> <!-- Required for Lollipop. --> <item name="android:overlapAnchor">false</item> </style> </resources> 

Fuente: https://stackoverflow.com/a/27134045/3586815

Gracias a Nikola Despotoski por la pista.

Este es el nuevo valor predeterminado con Material Design. Los menús emergentes se mostrarán desde el Button que los abrió.

Esto se hace para aumentar la conexión visual entre el Button y el menú emergente. Basta con ver las aplicaciones de Googles que ya utilizan Material Design, allí los menús emergentes actúan de la misma manera.

  • Informe Leakcanary de pérdida de memoria usando Otto
  • Realizar N llamadas de api secuenciales usando RxJava y Retrofit
  • EditarTexto de texto oculto
  • Android - Código fuente de phonegap cordova.jar
  • MPAndroidChart no está actualizando
  • Necesito ayuda para seleccionar la versión correcta de jdk para mi 64bit Windows 7
  • Método de descubrimiento de gancho para Xposed Module
  • Palabra clave ".class" en Java
  • ¿Cómo puedo hacer negrita y subrayar una cadena dinámicamente en el código de Android?
  • Cómo ocultar la clave del API del traductor en android
  • ¿Por qué la verificación de firma en el servidor remoto es más segura que en el dispositivo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.