Domanda

Non so quello che ho fatto, ma per un periodo di tempo la mia TabWidget aveva schede di colore bianco, che sembrava davvero bello. Non ho mai messo un tema o sfondo / colore di primo piano nel mio progetto a tutti. La prossima volta che ho compilato che è ritornato di nuovo alle schede grigie. La mia applicazione utilizza il tema scuro di default. Anche se ho impostato il tema di applicazione alla luce, le schede sono ancora grigio. Così, ovviamente, è stato qualcos'altro che ha cambiato il colore delle schede. Qualcuno sa come fare questo?

È stato utile?

Soluzione

ho avuto un problema a causa di un bug in tema di luce Android 1.6 del (indicatore di scheda di testo è bianco). Sono stato in grado di ignorare il tema di default nel seguente modo:

  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 per la mia applicazione aggiungendo android:theme="@style/MyTheme" all'elemento <application /> della mia AndroidManifest.xml.

Altri suggerimenti

Controlla questa risposta di mine: nel widget di scheda ignorare il ridimensionamento

Si può anche fare riferimento al pacchetto android.graphics.drawable

Nel codice, è possibile impostare lo sfondo per le schede di questo tipo:

tabHost.getTabWidget().getChildAt(0).setBackgroundResource(
            android.R.color.white);

nel public void onCreate(Bundle savedInstanceState)

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

rispetto in 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
}

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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top