Nie wiem, co zrobiłem, ale przez pewien czas mój TabWidget miał białe, kolorowe zakładki, które wyglądały naprawdę ładnie. Nigdy w ogóle nie ustawiłem koloru motywu lub tła/pierwszego planu w moim projekcie. Następnym razem, gdy go skompilowałem, wróciłem do szarej zakładki. Moja aplikacja używa domyślnego ciemnego motywu. Nawet jeśli ustawię kompozycję aplikacji na światło, karty będą nadal szare. To oczywiste, że to coś innego zmieniło kolor kart. Czy ktoś wie, jak to zrobić?TabWidget biały kolor pierwszego planu?
Odpowiedz
I wystąpił problem z powodu błędu w motywie świetlnym systemu Android 1.6 (tekst wskaźnika karty jest biały). Byłem w stanie zastąpić domyślny motyw następująco:
- stworzyłem własny motyw, który odziedziczony z domyślnego motywu:
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>
Potem wystarczy zastosować ten temat do mojej aplikacji, dodając android:theme="@style/MyTheme"
do elementu <application />
mojego AndroidManifest.xml
.
thanx steve, pomógł mi i uczyniłeś moje życie –
Sprawdź tę odpowiedź z kopalni: Background in tab widget ignore scaling
Można również zapoznać się z pakietem
W kodzie android.graphics.drawable
można ustawić tło dla swoich kart tak:
tabHost.getTabWidget().getChildAt(0).setBackgroundResource(
android.R.color.white);
To sprawia, że tło karty jest czarne, bez względu na wszystko. – Monstieur
w public void onCreate(Bundle savedInstanceState)
`tabHost = getTabHost();
tabHost.setOnTabChangedListener(this);
tabHost.setCurrentTab(0);
setTabColor();`
niż w słuchacza:
public void onTabChanged (String tabetyczny) { setTabColor();
wreszcie funkcja, która ustawiona na pierwszym planie i tło TOO:
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
}
W 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);
}
}
Czy może badania na dwóch różnych wersjach platformy? Styl zakładki zmieniony w wersji 2.0. Ponadto, jeśli mógłbyś opublikować zrzut ekranu, zrobiony przy pomocy 'DDMS', bardzo by to pomogło. –
Ah, tak. Pochodziło z kompilacji 1.6. Czy istnieje sposób ręcznego ustawienia tego samego koloru dla wersji 2.0+? – Monstieur
Miałem ten problem i stwierdziłem, że to atrybut 'targetSdkVersion' w AndroidManifest.xml spowodował, że zmienił się on dla mnie. –