Te damos la bienvenida a nuestro sitio web, ahora encontrarás la resolución de lo que estás buscando.
Solución:
No estaba satisfecho con la respuesta aceptada, ya que realmente no explica por qué no se está aplicando el estilo emergente personalizado de OP, no solo el fondo, sino también cosas como el color del texto, así que hice mi propia experimentación.
Es importante tener en cuenta que existe una diferencia entre la ventana emergente creada por el Toolbar
(cuando tiene elementos de menú) y mostrar uno usted mismo con PopupMenu
. Estos se rigen por diferentes temas. attributes. Además, tenga en cuenta que hay dos PopupMenu
clases: android.widget.PopupMenu
, y android.support.v7.widget.PopupMenu
.
El tema attribute necesitas peinar PopupMenu
s que muestra explícitamente es android:popupMenuStyle
o popupMenuStyle
. Tiene algunas opciones para lograr la aplicación adecuada de su estilo personalizado:
(1) Usar android:popupMenuStyle
en el tema de la actividad (o aplicación)
PopupMenu popup = new PopupMenu(this, anchorView);
Tenga en cuenta que esto no requiere nada adicional en su archivo de diseño.
(2) Utilice un ContextThemeWrapper
ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.CustomPopupTheme);
PopupMenu popup = new PopupMenu(ctw, anchorView);
Tenga en cuenta cómo esto no usa R.style.PopupMenu
directamente al construir el ContextThemeWrapper
. Esto parece un poco indirecto, pero es útil si desea mantener el tema emergente separado de la actividad o los temas de la aplicación (tal vez solo algunas ventanas emergentes necesiten su tema especial, por ejemplo).
(3) Usa tu AppBarLayout
Contexto de
AppBarLayout appBar = (AppBarLayout) findViewById(R.id.app_bar);
PopupMenu popup = new PopupMenu(appBar.getContext(), anchorView);
Como ya tiene una superposición de tema para la AppBar, puede usarla para guardar las referencias de su tema emergente. Esto también funcionaría con el contexto de la barra de herramientas, al menos dado el diseño actual, aunque tenga en cuenta que app:popupTheme
no es realmente relevante aquí, ya que afecta a la Toolbar
es una ventana emergente y no tu PopupMenu
. También tenga en cuenta lo similar que es esto a la opción 2 anterior, que debería indicarle cómo android:theme
attribute funciona bajo el capó;)
En mis experimentos, android:itemBackground
solo funcionó cuando lo usé en lugar de android:colorBackground
en el PopupOverlay
estilo. Sin embargo, es mejor usar android:colorBackground
porque eso cambiará el color de la ventana emergente, dejando intactas las esquinas redondeadas y el resaltado / ondulación del elemento seleccionable.
Context wrapper = new ContextThemeWrapper(this, R.style.YOURSTYLE);
PopupMenu popup = new PopupMenu(wrapper, view);
Puede que te ayude
Esto funcionó para mi
- @color/primary
Inserte eso en su estilo principal, espero que esto funcione para usted
Aquí puedes ver las reseñas y valoraciones de los lectores
Al final de la post puedes encontrar las críticas de otros usuarios, tú igualmente tienes la habilidad insertar el tuyo si lo crees conveniente.