it-swarm.com.ru

как изменить цвет текста индикатора вкладок в андроиде?

как изменить цвет текстового индикатора вкладки? я могу изменить значок с помощью тега селектора, ссылаясь на пример . но не могу цвет текста. как? 

24
Praveen

Стиль это в вашей пользовательской теме изменения 

<item name="Android:tabWidgetStyle">@Android:style/Widget.TabWidget</item> 

а также

<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>     
24
Alex Volovoy

Вот новый ответ, который я нашел от Фреда Гротта ( http://knol.google.com/k/fred-grott/advance-tabs/ ) после небольшого поиска в Интернете .
Это позволяет вам установить selector для цвета текста, чтобы при выборе вкладки можно было использовать другой цвет. Что может быть очень полезно, если вы используете другой цвет фона для вкладки, если она выбрана. Конечно, вы также можете просто добавить простой цвет, а не селектор.

final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(Android.R.id.title);        
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));

Где R.color.text_tab_indicator - это XML-файл селектора , расположенный в папке res/drawable.

Другими словами, текст индикатора действительно представляет собой TextView, который можно получить через объект View, к которому можно получить доступ из объекта TabWidget .
Взгляните на примеры Фреда для получения дополнительной информации и контекста относительно объявлений переменных, а также других приемов.

30
Danny C

Ответ Дэнни С. на 100% правильный. Я просто хотел что-то добавить к нему, чтобы получить полный ответ с файлом ресурсов.

Text_tab_indicator в файле 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>

И этот text_tab_unselected & text_tab_selected будет выглядеть так в папке colors/values

<resources> 
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>

После этого, наконец, добавьте ответ Dannyy в файл класса tab.

final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(Android.R.id.title);        
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
20
Shahzad Imam

Изменение цвета также может быть указано без использования Java - что, вероятно, лучше.

Я внес изменения в text_tab_indicator (обратите внимание, что textColor был изменен на 'color'):

<?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>

Установите стиль TabWidget, чтобы он указывал на определенный стиль в вашем XML-коде:

<TabWidget
    ...
    style="@style/TabText"
    />

Объявите ваш text_tab_indicator, расположенный в/res/color, как желаемый цвет в стиле

<style name="TabText">
    <item name="Android:textColor">@color/tab_text_color</item>
</style>

Это работает как шарм (для меня).

Cheers, Randall

6
javahead76

Попробуйте ColorStateLists . Удачи.

0
trgraglia