Белый цвет переднего плана TabWidget?
Вопрос
Я не знаю, что я сделал, но в течение некоторого времени в моем TabWidget были вкладки белого цвета, которые выглядели действительно красиво.Я вообще никогда не устанавливаю тему или цвет фона / переднего плана в своем проекте.В следующий раз, когда я скомпилировал его, он вернулся к серым вкладкам.Мое приложение использует темную тему по умолчанию.Даже если я установлю для темы приложения светлый цвет, вкладки все равно останутся серыми.Так что, очевидно, это было что-то другое, что изменило цвет вкладок.Кто-нибудь знает, как это сделать?
Решение
У меня возникла проблема из-за ошибки в светлой теме Android 1.6 (текст индикатора вкладки белый).Я смог переопределить тему по умолчанию следующим образом:
- Я создал пользовательскую тему, унаследованную от темы по умолчанию:
styles.xml
:
<style name="MyTheme" parent="@android:style/Theme.Light">
<item name="android:tabWidgetStyle">@style/LightTabWidget</item>
</style>
<style name="LightTabWidget" parent="@android:style/Widget.TabWidget">
<!-- set textColor to red, so you can verify that it applied. -->
<item name="android:textColor">#f00</item>
</style>
Затем я просто применяю эту тему к своему приложению, добавляя android:theme="@style/MyTheme"
к тому <application />
элемент моего AndroidManifest.xml
.
Другие советы
Проверьте этот мой ответ: Фон в виджете tab игнорирует масштабирование
Вы также можете обратиться к android.graphics.drawable
упаковка
В вашем коде вы можете установить фон для своих вкладок следующим образом:
tabHost.getTabWidget().getChildAt(0).setBackgroundResource(
android.R.color.white);
в public void onCreate(Bundle savedInstanceState)
`tabHost = getTabHost();
tabHost.setOnTabChangedListener(this);
tabHost.setCurrentTab(0);
setTabColor();`
чем в слушателе:
общедоступная пустота на измененной вкладке(строка tabId) { Настройка цвета ();
наконец, функция, которая устанавливает передний план и фон тоже:
public void setTabColor() {
// set foreground color:
for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
RelativeLayout rl = (RelativeLayout) tabHost.getTabWidget().getChildAt(i);
ImageView imageView = (ImageView) rl.getChildAt(0);// change it if you want it
TextView textView = (TextView) rl.getChildAt(1);//
textView.setTextColor(Color.parseColor("#FFFFFF"));
}
// set background color:
for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#010101")); // unselected
}
tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#121288")); // selected
}
В onCreated() :
tabHost.setCurrentTab(0);
// Set tabs text color to white:
TabWidget tabWidget = tabHost.getTabWidget();
int whiteColor = getResources().getColor(R.color.white);
int someOtherColor = getResources().getColor(R.color.someOtherColor);
for(int i = 0; i < tabWidget.getChildCount(); i++){
View tabWidgetChild = tabWidget.getChildAt(i);
if(tabWidgetChild instanceof TextView){
((TextView) tabWidgetChild).setTextColor(whiteColor);
} else if(tabWidgetChild instanceof Button){
((Button) tabWidgetChild).setTextColor(whiteColor);
} else if(tabWidgetChild instanceof ViewGroup){
ViewGroup vg = (ViewGroup)tabWidgetChild;
for(int y = 0; y < vg.getChildCount(); y++){
View vgChild = vg.getChildAt(y);
if(vgChild instanceof TextView){
((TextView) vgChild).setTextColor(whiteColor);
}
}
vg.setBackgroundColor(someOtherColor);
}
}