TabWidget белый цвет переднего плана? - PullRequest
6 голосов
/ 30 марта 2010

Я не знаю, что я сделал, но какое-то время мой TabWidget имел белые вкладки, которые выглядели очень хорошо Я никогда не устанавливал тему или цвет фона / переднего плана в моем проекте вообще. В следующий раз, когда я его скомпилировал, он вернулся к серым вкладкам. Мое приложение использует темную тему по умолчанию. Даже если я установил светлую тему приложения, вкладки все равно будут серыми. Очевидно, что это изменило цвет вкладок. Кто-нибудь знает, как это сделать?

Ответы [ 4 ]

15 голосов
/ 02 июля 2010

У меня возникла проблема из-за ошибки в светлой теме Android 1.6 (текст индикатора вкладки белый). Мне удалось переопределить тему по умолчанию следующим образом:

  1. Я создал собственную тему, унаследованную от темы по умолчанию:

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 /> моего AndroidManifest.xml.

6 голосов
/ 30 марта 2010

Проверьте мой ответ: Фон во вкладке виджета игнорирует масштабирование

Вы также можете обратиться к пакету android.graphics.drawable

В своем коде вы можете установить фон для своих вкладок следующим образом:

tabHost.getTabWidget().getChildAt(0).setBackgroundResource(
            android.R.color.white);
1 голос
/ 20 июля 2011

в 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
}
0 голосов
/ 01 ноября 2013

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