Posso alterar a cor de fundo de um item de menu no Android?
Informe-me se alguém tiver alguma solução para isso. A última opção será obviamente personalizá-la, mas existe alguma maneira de alterar a cor do texto sem personalizá-la.
android
menuitem
textcolor
layout-inflater
tomar sol
fonte
fonte
Respostas:
Uma linha simples no seu tema :)
fonte
actionBarStyle
por exemplo. Não funcionará por dentroactionBarStyle
, mesmo que isso pareça lógico!<item name="actionMenuTextColor">@color/your_color</item>
não use o namespace Androidtheme
atributo na sua barra de ferramentas, isso funcionará.Parece que um
no meu tema e
em styles.xml altere o estilo dos itens da lista, mas não dos itens de menu.
fonte
android:itemTextAppearance
atributo não pode ser colocado em um estilo cujo pai é,parent="@android:style/Widget.Holo.ListPopupWindow"
pois isso não será renderizado corretamente. Ele deve estar em um estilo de nível superior, como aquele cujo pai éandroid:Theme.Holo.Light.DarkActionBar
.Theme.Holo
ouTheme.Holo.Light.DarkActionBar
ou similar.Você pode alterar a cor do
MenuItem
texto facilmente usando emSpannableString
vez deString
.fonte
menu.findItem(R.id.menu_item_id);
em vez demenu.getItem()
Se você estiver usando a nova barra de ferramentas, com o tema
Theme.AppCompat.Light.NoActionBar
, poderá estilizá-la da seguinte maneira.De acordo com os resultados que obtive,
android:textColorPrimary
é a cor do texto que exibe o nome da sua atividade, que é o texto principal da barra de ferramentas.android:textColorSecondary
é a cor do texto das legendas e o botão de mais opções (3 pontos). (Sim, ele mudou de cor de acordo com esta propriedade!)android:textColor
É a cor de todos os outros textos, incluindo o menu.Finalmente, defina o tema para a barra de ferramentas
fonte
android:actionMenuTextColor
(consulte stackoverflow.com/a/5538709/423105 ).Se você estiver usando o menu
<android.support.design.widget.NavigationView />
, basta adicionar a linha abaixoNavigationView
:Também disponível colorTint para ícone, ele substituirá a cor do seu ícone também. Para isso você deve adicionar a linha abaixo:
Exemplo:
Espero que ajude você.
fonte
Eu fui sobre isso programaticamente assim:
fonte
Como você pode ver nesta pergunta, você deve:
O código acima altera a cor do texto dos itens de ação do menu para API> = v21.
Acima está o código da API <v21
fonte
Usei a tag html para alterar a cor do texto de um único item quando o item de menu é inflado. Espero que seja útil.
fonte
A maneira MAIS SIMPLES de criar cores de menu personalizadas para uma barra de ferramentas única, não para o AppTheme
barra de ferramentas usual em styles.xml
nosso estilo de barra de ferramentas personalizado
fonte
no Kotlin, escrevi estas extensões:
e usado assim:
fonte
A resposta curta é sim. sortudo!
Para fazer isso, você precisa substituir alguns estilos dos estilos padrão do Android:
Primeiro, observe a definição dos temas no Android:
Portanto, a aparência do texto no menu está em
@android:style/TextAppearance.Widget.IconMenu.Item
Agora, na definição dos estilos :
Portanto, agora temos o nome da cor em questão, se você procurar na pasta de cores dos recursos do sistema:
Finalmente, aqui está o que você precisa fazer:
Substitua "TextAppearance.Widget.IconMenu.Item" e crie seu próprio estilo. Em seguida, vincule-o ao seu próprio seletor para torná-lo da maneira que desejar. Espero que isso ajude você. Boa sorte!
fonte
O menu Opções no Android pode ser personalizado para definir o plano de fundo ou alterar a aparência do texto. A cor do plano de fundo e do texto no menu não pôde ser alterada usando temas e estilos. O código-fonte do Android (data \ res \ layout \ icon_menu_item_layout.xml) usa um item personalizado da classe “com.android.internal.view.menu.IconMenuItem” View para o layout do menu. Podemos fazer alterações na classe acima para personalizar o menu. Para conseguir o mesmo, use a classe de fábrica LayoutInflater e defina a cor do plano de fundo e do texto para a exibição.
fonte
03-23 19:45:25.134: E/AndroidRuntime(26761): java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Obrigado pelo exemplo de código. Eu tive que modificá-lo e fazê-lo funcionar com um menu de contexto. Esta é a minha solução.
Para mim, isso funciona com o Android 1.6, 2.03 e 4.03.
fonte
eu achei Eureka !!
no seu tema do aplicativo:
Aqui está o seu tema da barra de ação:
e aqui está o seu tema pop-up:
Felicidades ;)
fonte
para alterar a cor do texto do item de menu, use o código abaixo
Onde
fonte
Graças a max.musterman, esta é a solução que consegui trabalhar no nível 22:
O código codificado
Color.BLACK
pode se tornar um parâmetro adicional para osetMenuTextColor
método. Além disso, eu só usei isso para itens de menu que eramandroid:showAsAction="never"
.fonte
Você pode definir cores programaticamente.
fonte
Adicionando isso ao meu styles.xml funcionou para mim
fonte
Basta adicionar isso ao seu tema
Testado na API 21
fonte
<style name="AppTheme.ItemTextStyle" parent="@android:style/TextAppearance.Widget">
, caso contrário, o texto parece muito pequeno no menu de estouro. Observe também que essa técnica funciona apenas no Android 5 e superior.fonte
Minha situação era configurações de cor do texto no menu de opções (o menu principal do aplicativo era exibido no pressionamento do botão de menu).
Testado na API 16 com a biblioteca appcompat-v7-27.0.2 ,
AppCompatActivity
paraMainActivity
eAppCompat
tema para o aplicativo no AndroidManifest.xml .styles.xml :
Não sei se isso
textColorSecondary
afeta outros elementos, mas controla a cor do texto do menu.Procurei alguns exemplos sobre o tópico, mas todos os trechos prontos para uso não funcionaram.
Então, eu queria investigar isso com o código-fonte da biblioteca appcompat-v7 (especificamente com a pasta res do pacote .aar ).
Embora, no meu caso, eu usei o Eclipse com dependências .aar explodidas . Para que eu pudesse alterar os estilos padrão e verificar os resultados. Não sei como explodir as bibliotecas para usar diretamente com o Gradle ou o Android Studio . Merece outro segmento de investigação.
Portanto, meu objetivo era descobrir qual cor no arquivo res / values / values.xml é usada para o texto do menu (eu tinha quase certeza de que a cor estava lá).
#f00
valor a todas elas.secondary_text_default_material_light
item de cor.@color/abc_secondary_text_material_light
.Base.ThemeOverlay.AppCompat.Light
ePlatform.AppCompat.Light
.android:textColorSecondary
eandroid:textColorTertiary
noBase.ThemeOverlay.AppCompat.Light
.android:textColorSecondary
.Theme.AppCompat.Light
e não oThemeOverlay.AppCompat.Light
).Base.ThemeOverlay.AppCompat.Light
. Teve um filhoThemeOverlay.AppCompat.Light
.ThemeOverlay.AppCompat.Light
, encontrei seu uso noBase.Theme.AppCompat.Light.DarkActionBar
tema como oactionBarPopupTheme
valor do atributo.Theme.AppCompat.Light.DarkActionBar
era filho do encontrado,Base.Theme.AppCompat.Light.DarkActionBar
para que eu pudesse usar esse atributo nos meus styles.xml sem problemas.ThemeOverlay.AppCompat.Light
e alterei oandroid:textColorSecondary
atributo.fonte
A solução de Sephy não funciona. É possível substituir a aparência do texto do item de menu de opções usando o método descrito acima, mas não o item ou menu. Para fazer isso, existem essencialmente três maneiras:
Consulte o Problema 4441: Tema do menu Opções personalizadas para obter mais dicas.
fonte
tente este código ....
fonte
java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Se você deseja definir cores para um item de menu individual, a personalização de um tema da barra de ferramentas não é a solução certa. Para conseguir isso, você pode usar o android: actionLayout e uma exibição de ação para o item de menu.
Primeiro, crie um arquivo de layout XML para a visualização de ação. Neste exemplo, usamos um botão como uma visualização de ação:
menu_button.xml
No snippet de código acima, usamos
android:textColor="?android:attr/colorAccent"
para personalizar a cor do texto do botão.Em seguida, no seu arquivo de layout XML para o menu, inclua
app:actionLayout="@layout/menu_button"
como mostrado abaixo:main_menu.xml
Última substituição do
onCreateOptionsMenu()
método em sua atividade:... ou fragmento:
Para mais detalhes sobre visualizações de ação, consulte o guia do desenvolvedor do Android .
fonte
É assim que você pode colorir um item de menu específico com cores e funciona em todos os níveis da API:
Ao fazer isso, você perde o efeito seletor de plano de fundo, eis o código para aplicar um seletor de plano de fundo personalizado a todos os filhos do item de menu.
Aqui está a função auxiliar também:
fonte
Para alterar a cor do texto, você pode apenas definir uma exibição personalizada para o MenuItem e, em seguida, definir a cor do texto.
Código de exemplo: MenuItem.setActionView ()
fonte