Como alterar a cor do texto indicador de guias no Android?
Pergunta
Como alterar a cor do indicador de texto da guia? Eu posso alterar o ícone usando a tag seletor referida exemplo. mas não consigo para a cor do texto. quão?
Solução
Estilizá -lo em sua mudança de tema personalizada
<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item>
e
<style name="Widget.TabWidget">
<item name="android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.Widget.TabWidget">
<item name="android:textSize">14sp</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">@android:color/tab_indicator_text</item>
</style>
Outras dicas
Aqui está uma nova resposta que encontrei de Fred Grott (http://knol.google.com/k/fred-grott/advance-tabs/) depois de uma pequena pesquisa na web.
Isso permite que você defina um selector
Para a cor do texto para que uma cor diferente possa ser usada quando a guia é selecionada ou não. O que pode ser muito útil se você estiver usando uma cor de fundo diferente para a guia, se estiver selecionada. Claro que você também pode apenas jogar uma cor simples e não um seletor.
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Onde r.color.text_tab_indicator é um Arquivo XML Seletor Localizado na sua pasta RES/Drawable.
Em outras palavras, o texto indicador é realmente um TextView
que é recuperável através do View
objeto que pode ser acessado do TabWidget
objeto.
Dê uma olhada nos exemplos de Fred para obter mais informações e contexto sobre as declarações variáveis, bem como outros truques.
A resposta de Danny C está 100% correta. Eu só queria adicionar algo a ele para fazer uma resposta completa com o arquivo de recursos.
O texto text_tab_indicator sob o arquivo res/color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:textColor="@color/text_tab_selected"
android:state_selected="true" />
<item android:textColor="@color/text_tab_unselected"
android:state_selected="false" />
</selector>
E este texto_tab_unslectect & text_tab_selected ficará assim com a pasta de cores/valores
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
Depois disso, finalmente adiciona a resposta de Dannyy no arquivo da classe de guia
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
A mudança de cor também pode ser declarada sem o uso de Java - o que provavelmente é melhor.
Eu fiz alterações no texto_tab_indicator (aviso textColor foi alterado para 'cor'):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/text_tab_selected" />
<item android:state_selected="false" android:color="@color/text_tab_unselected" />
</selector>
Defina o estilo do TabWidget para apontar para um estilo específico no seu código XML:
<TabWidget
...
style="@style/TabText"
/>
Declare seu text_tab_indicator localizado em /res /color como você desejava a cor no estilo
<style name="TabText">
<item name="android:textColor">@color/tab_text_color</item>
</style>
Funcionou como um encanto (para mim).
Saúde, Randall
Tentar Colorstatelists. Boa sorte.