Frage

Ich weiß nicht, was ich tue, aber für einen Zeitraum von Zeit meine TabWidget hatte weiß farbig Tabs, die wirklich schön aussahen. Ich habe nie ein Thema oder Hintergrund / Vordergrundfarbe in meinem Projekt überhaupt. Das nächste Mal, wenn ich es kompilierte es zurück zurück zu den grauen Lappen. Meine Anwendung wird mit dem Standard-dunkles Thema. Auch wenn ich die Anwendung Thema Licht gesetzt, sind die Laschen noch grau. So offensichtlich war es etwas anderes, das die Registerkarten Farbe geändert. Wer weiß, wie dies zu tun?

War es hilfreich?

Lösung

Ich habe ein Problem mit aufgrund eines Fehlers in Android 1.6 ist leicht Thema (Tab Indikator Text ist weiß). Ich konnte das Standard-Theme außer Kraft zu setzen, wie folgt:

  1. Ich habe ein eigenes Thema, dass aus dem Standard-Theme geerbt:

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>

Dann wende ich gerade das Thema meiner Anwendung von android:theme="@style/MyTheme" zum <application /> Elemente meines AndroidManifest.xml hinzufügen.

Andere Tipps

Überprüfen Sie diese Antwort von mir: Hintergrund in Tab Widget Skalierung ignorieren

Sie können auch auf die android.graphics.drawable Paket

In Ihrem Code können Sie den Hintergrund für Ihre Tabs wie folgt festgelegt:

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

in den public void onCreate(Bundle savedInstanceState)

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

als in den Hörer:

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

schließlich die Funktion, die den Vordergrund und den Hintergrund zu setzen:

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top