Saltar al contenido

Cambiar el color de fondo del menú emergente

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 PopupMenus 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 AppBarLayoutContexto 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 Toolbares 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *