как изменить цвет текстового индикатора вкладки? Я могу изменить значок с помощью тега selector, который ссылается на пример. но не соответствует цвету текста. как?
Как изменить цвет текста индикатора вкладок в android?
Ответ 1
Стиль в пользовательском изменении темы
<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>
Ответ 2
Вот новый ответ, который я нашел у Фреда Грота (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
.
Взгляните на примеры Fred для получения дополнительной информации и контекста относительно объявлений переменных, а также других трюков.
Ответ 3
Ответ 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>
И этот текст_tab_unselected и text_tab_selected будет выглядеть так в папке colors/values
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
После этого добавьте ответ Dannyy в файл класса вкладок
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Ответ 4
Изменение цвета также может быть указано без использования 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
Ответ 5
Попробуйте ColorStateLists. Удачи.