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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top