¿Puedo cambiar el color de fondo de un elemento de menú en Android?
Avíseme si alguien tiene alguna solución para esto. Obviamente, la última opción será personalizarlo, pero hay alguna forma de cambiar el color del texto sin personalizarlo.
¿Puedo cambiar el color de fondo de un elemento de menú en Android?
Avíseme si alguien tiene alguna solución para esto. Obviamente, la última opción será personalizarlo, pero hay alguna forma de cambiar el color del texto sin personalizarlo.
Respuestas:
Una línea simple en tu tema :)
fuente
actionBarStyle
por ejemplo. No funcionará dentroactionBarStyle
, ¡aunque parezca lógico!<item name="actionMenuTextColor">@color/your_color</item>
, no use el espacio de nombres de Androidtheme
atributo en su barra de herramientas, esto funciona.Parece que un
en mi tema y
en styles.xml cambia el estilo de los elementos de la lista pero no de los elementos del menú.
fuente
android:itemTextAppearance
atributo no se puede colocar dentro de un estilo cuyo padre es,parent="@android:style/Widget.Holo.ListPopupWindow"
ya que no se representará correctamente. Debe estar en un estilo de nivel superior como uno cuyo padre esandroid:Theme.Holo.Light.DarkActionBar
.Theme.Holo
oTheme.Holo.Light.DarkActionBar
o similar.Puede cambiar el color del
MenuItem
texto fácilmente usando enSpannableString
lugar deString
.fuente
menu.findItem(R.id.menu_item_id);
lugar demenu.getItem()
Si está utilizando la nueva barra de herramientas, con el tema
Theme.AppCompat.Light.NoActionBar
, puede diseñarla de la siguiente manera.Según los resultados que obtuve,
android:textColorPrimary
es el color del texto que muestra el nombre de su actividad, que es el texto principal de la barra de herramientas.android:textColorSecondary
es el color del texto para el botón de subtítulos y más opciones (3 puntos). (Sí, ¡cambió su color de acuerdo con esta propiedad!)android:textColor
Es el color de todos los demás textos, incluido el menú.Finalmente establece el tema en la barra de herramientas
fuente
android:actionMenuTextColor
(consulte stackoverflow.com/a/5538709/423105 ).Si está utilizando el menú como
<android.support.design.widget.NavigationView />
entonces, simplemente agregue la siguiente línea enNavigationView
:También disponible en colorTint para ícono, también anulará el color de su ícono. Para eso tienes que agregar la siguiente línea:
Ejemplo:
Espero que te ayude.
fuente
Lo hice programáticamente así:
fuente
como puede ver en esta pregunta , debe:
El código anterior cambia el color del texto de los elementos de acción del menú para API> = v21.
Arriba está el código para API <v21
fuente
Usé la etiqueta html para cambiar el color del texto de un solo elemento cuando el elemento del menú está inflado. Espero que sea útil.
fuente
La forma MÁS SENCILLA de hacer un color de menú personalizado para una barra de herramientas única, no para AppTheme
barra de herramientas habitual en styles.xml
nuestro estilo de barra de herramientas personalizada
fuente
en Kotlin escribí estas extensiones:
y usado así:
fuente
La respuesta corta es sí. ¡eres afortunado!
Para hacerlo, debe anular algunos estilos de los estilos predeterminados de Android:
Primero, mira la definición de los temas en Android:
Entonces, la aparición del texto en el menú está en
@android:style/TextAppearance.Widget.IconMenu.Item
Ahora, en la definición de los estilos :
Así que ahora tenemos el nombre del color en cuestión, si busca en la carpeta de colores de los recursos del sistema:
Finalmente, esto es lo que debe hacer:
Anule "TextAppearance.Widget.IconMenu.Item" y cree su propio estilo. Luego, vincúlelo a su propio selector para hacerlo de la manera que desee. Espero que esto te ayude. ¡Buena suerte!
fuente
El menú de opciones en Android se puede personalizar para establecer el fondo o cambiar la apariencia del texto. El fondo y el color del texto en el menú no se pueden cambiar usando temas y estilos. El código fuente de Android (data \ res \ layout \ icon_menu_item_layout.xml) utiliza un elemento personalizado de la clase "com.android.internal.view.menu.IconMenuItem" View para el diseño del menú. Podemos hacer cambios en la clase anterior para personalizar el menú. Para lograr lo mismo, use la clase de fábrica LayoutInflater y establezca el fondo y el color del texto para la vista.
fuente
03-23 19:45:25.134: E/AndroidRuntime(26761): java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Gracias por el código de ejemplo. Tuve que modificarlo para que funcione con un menú contextual. Esta es mi solución
Para mí esto funciona con Android 1.6, 2.03 y 4.03.
fuente
Lo encontré Eureka !!
en el tema de tu aplicación:
Aquí está el tema de su barra de acción:
y aquí está tu tema emergente:
Salud ;)
fuente
para cambiar el color del texto del elemento del menú, use el siguiente código
dónde
fuente
Gracias a max.musterman, esta es la solución que llegué a trabajar en el nivel 22:
El hardcoded
Color.BLACK
podría convertirse en un parámetro adicional para elsetMenuTextColor
método. Además, solo usé esto para elementos de menú que eranandroid:showAsAction="never"
.fuente
Puede configurar el color mediante programación.
fuente
Agregar esto a mi styles.xml funcionó para mí
fuente
Simplemente agregue esto a su tema
Probado en API 21
fuente
<style name="AppTheme.ItemTextStyle" parent="@android:style/TextAppearance.Widget">
, de lo contrario el texto parece demasiado pequeño en el menú de desbordamiento. También tenga en cuenta que esta técnica solo funciona en Android 5 y superior.fuente
Mi situación fue la configuración del color del texto en el menú de opciones (el menú principal de la aplicación se mostró al presionar el botón de menú).
Probado de API 16 con appcompat-v7-27.0.2 biblioteca,
AppCompatActivity
paraMainActivity
yAppCompat
tema para la aplicación en AndroidManifest.xml .styles.xml :
No sé si eso
textColorSecondary
afecta a otros elementos pero controla el color del texto del menú.Busqué algunos ejemplos sobre el tema, pero todos los fragmentos listos para usar no funcionaron.
Así que quería investigarlo con el código fuente de la biblioteca appcompat-v7 (específicamente con la carpeta res del paquete .aar ).
Aunque en mi caso usé Eclipse con dependencias .aar explotadas . Entonces podría cambiar los estilos predeterminados y verificar los resultados. No sé cómo explotar las bibliotecas para usar con Gradle o Android Studio directamente. Se merece otro hilo de investigación.
Entonces, mi propósito era encontrar qué color en el archivo res / values / values.xml se usa para el texto del menú (estaba casi seguro de que el color estaba allí).
#f00
valor.secondary_text_default_material_light
elemento de color.@color/abc_secondary_text_material_light
.Base.ThemeOverlay.AppCompat.Light
yPlatform.AppCompat.Light
.android:textColorSecondary
yandroid:textColorTertiary
en elBase.ThemeOverlay.AppCompat.Light
.android:textColorSecondary
.Theme.AppCompat.Light
y no elThemeOverlay.AppCompat.Light
).Base.ThemeOverlay.AppCompat.Light
. Tuvo un hijoThemeOverlay.AppCompat.Light
.ThemeOverlay.AppCompat.Light
, encontré su uso en elBase.Theme.AppCompat.Light.DarkActionBar
tema comoactionBarPopupTheme
valor de atributo.Theme.AppCompat.Light.DarkActionBar
era hijo de lo encontrado,Base.Theme.AppCompat.Light.DarkActionBar
por lo que podría usar ese atributo en mi styles.xml sin problemas.ThemeOverlay.AppCompat.Light
y cambié elandroid:textColorSecondary
atributo.fuente
La solución de Sephy no funciona. Es posible anular la apariencia del texto del elemento del menú de opciones utilizando el método descrito anteriormente, pero no el elemento o el menú. Para hacer eso hay esencialmente 3 formas:
Consulte el número 4441: Tema del menú de opciones personalizadas para obtener más pistas.
fuente
prueba este código ...
fuente
java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Si desea establecer el color para un elemento de menú individual, personalizar un tema de barra de herramientas no es la solución correcta. Para lograr esto, puede hacer uso de android: actionLayout y una vista de acción para el elemento del menú.
Primero cree un archivo de diseño XML para la vista de acción. En este ejemplo, usamos un botón como vista de acción:
menu_button.xml
En el fragmento de código anterior, usamos
android:textColor="?android:attr/colorAccent"
para personalizar el color del texto del botón.Luego, en su archivo de diseño XML para el menú, incluya lo
app:actionLayout="@layout/menu_button"
que se muestra a continuación:main_menu.xml
Última anulación del
onCreateOptionsMenu()
método en su actividad:... o fragmento:
Para obtener más detalles sobre las vistas de acción, consulte la guía para desarrolladores de Android .
fuente
Así es como puede colorear un elemento de menú específico con color, funciona para todos los niveles de API:
Al hacerlo, pierde el efecto del selector de fondo, así que aquí está el código para aplicar un selector de fondo personalizado a todos los elementos secundarios del menú.
Aquí está la función auxiliar también:
fuente
Para cambiar el color del texto, puede establecer una vista personalizada para el elemento de menú y luego puede definir el color del texto.
Código de muestra: MenuItem.setActionView ()
fuente