TabWidget更改选项卡底线颜色

时间:2015-01-19 14:52:54

标签: android android-tabhost

我想改变" Tab底线颜色"我按照这个步骤:
1.在我的styles.xml文件中:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Dgrey</item>
    </style>

    <style name="ActionBarTabStyle.Dgrey" parent="@android:style/Widget.Holo.ActionBar.TabView">
        <item name="android:background">@drawable/tab_indicator_ab_dgrey</item>
    </style>

</resources>

2。在tab_indicator_ab_dgrey我有:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_dgrey" />
    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/tab_selected_dgrey" />

    <!-- Focused states -->
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_dgrey" />
    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_dgrey" />

    <!-- Pressed -->
    <!--    Non focused states -->
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_dgrey" />
    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_dgrey" />

    <!--    Focused states -->
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_dgrey" />
    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_dgrey" />
</selector>

3。在我的可绘制文件夹(hdpi,mdpi,xhdpi,xxhdpi)中我有这些文件:
- tab_selected_dgrey.9.png
- tab_selected_focused_dgrey.9.png
- tab_selected_pressed_dgrey.9.png
- tab_unselected_dgrey.9.png
- tab_unselected_focused_dgrey.9.png
- tab_unselected_pressed_dgrey.9.png

在我的drawable文件夹中我有:
tab_indicator_ab_dgrey.xml档案

  1. 最后,这是我的manifest.xml

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="ch.studentgrades.StudentGrades"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

  2. 我不知道为什么(我按照教程)当我运行应用程序时没有改变任何东西,标签行颜色保持蓝色。

1 个答案:

答案 0 :(得分:0)

answer解决了我的问题。

设置标签后添加此代码:

TabHost host = (TabHost)view.findViewById(R.id.tab_host);
TabWidget widget = host.getTabWidget();
for(int i = 0; i < widget.getChildCount(); i++) {
    View v = widget.getChildAt(i);

    // Look for the title view to ensure this is an indicator and not a divider.
    TextView tv = (TextView)v.findViewById(android.R.id.title);
    if(tv == null) {
        continue;
    }
    v.setBackgroundResource(R.drawable.tab_indicator_ab_dgrey);
}

然后,您可以从styles.xml

中删除以下代码
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Dgrey</item>

<style name="ActionBarTabStyle.Dgrey" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_ab_dgrey</item>
</style>