TabWidget白色前景色?

时间:2010-03-30 06:56:04

标签: android colors tabs themes tabwidget

我不知道我做了什么但是在一段时间内我的TabWidget有白色的标签看起来非常好。我从来没有在我的项目中设置主题或背景/前景色。下次我编译它时它会恢复为灰色标签。我的应用程序使用默认的黑暗主题。即使我将应用程序主题设置为浅,标签仍然是灰色的。显然,这是改变标签颜色的其他因素。有谁知道怎么做?

4 个答案:

答案 0 :(得分:15)

由于Android 1.6的灯光主题中的错误(标签指示文字为白色),我遇到了问题。我能够覆盖默认主题,如下所示:

  1. 我创建了一个继承自默认主题的自定义主题:
  2. 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>
    

    然后,我只需将android:theme="@style/MyTheme"添加到<application />的{​​{1}}元素中,即可将该主题应用于我的应用。

答案 1 :(得分:6)

检查我的这个答案:Background in tab widget ignore scaling

您还可以参考android.graphics.drawable

在您的代码中,您可以设置标签的背景,如下所示:

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

答案 2 :(得分:1)

public void onCreate(Bundle savedInstanceState)

中的

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

比听众:

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

最后是设置前景和背景的功能:

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
}

答案 3 :(得分:0)

在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);
    }
}