2010-03-30 23 views
6

Non so cosa ho fatto ma per un periodo di tempo il mio TabWidget aveva delle linguette di colore bianco che sembravano davvero belle. Non ho mai impostato un tema o uno sfondo/colore di primo piano nel mio progetto. La volta successiva che l'ho compilato è tornato alle schede grigie. La mia applicazione utilizza il tema scuro predefinito. Anche se imposto il tema dell'applicazione alla luce, le schede sono ancora grigie. Quindi ovviamente era qualcos'altro che ha cambiato il colore delle schede. Qualcuno sa come fare questo?TabWidget Colore bianco in primo piano?

+0

Stai forse test su due differenti versioni della piattaforma? Lo stile della scheda è cambiato in 2.0. Inoltre, se si potesse pubblicare uno screenshot, preso con 'DDMS', sarebbe di grande aiuto. –

+0

Ah, si. Era dalla compilazione per 1.6. C'è un modo per impostare manualmente lo stesso colore per 2.0+? – Monstieur

+0

Ho riscontrato questo problema e ho stabilito che era l'attributo 'targetSdkVersion' nell'AndroidManifest.xml a causarne la modifica. –

risposta

15

I stava avendo un problema a causa di un bug nel tema della luce di Android 1.6 (il testo dell'indicatore è bianco). Sono stato in grado di ignorare il tema di default come segue:

  1. ho creato un tema personalizzato che ha ereditato dal tema predefinito:

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> 

Poi ho solo applicare tale tema alla mia domanda aggiungendo android:theme="@style/MyTheme" all'elemento <application /> del mio AndroidManifest.xml.

+0

Grazie Steve, mi ha aiutato e hai reso la mia vita –

1

nel public void onCreate(Bundle savedInstanceState)

  `tabHost = getTabHost(); 
      tabHost.setOnTabChangedListener(this); 
    tabHost.setCurrentTab(0); 
    setTabColor();` 

rispetto a chi ascolta:

public void onTabChanged (String tabid) { setTabColor();

infine la funzione, che ha fissato il primo piano e lo sfondo troppo:

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

In 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); 
    } 
} 
Problemi correlati