2010-03-30 21 views
6

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?

+0

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. –

+0

Ah, tak. Pochodziło z kompilacji 1.6. Czy istnieje sposób ręcznego ustawienia tego samego koloru dla wersji 2.0+? – Monstieur

+0

Miałem ten problem i stwierdziłem, że to atrybut 'targetSdkVersion' w AndroidManifest.xml spowodował, że zmienił się on dla mnie. –

Odpowiedz

15

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:

  1. 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.

+0

thanx steve, pomógł mi i uczyniłeś moje życie –

1

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 
} 
0

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); 
    } 
} 
Powiązane problemy