如何在tablayout中更改选定选项卡的颜色?

时间:2016-07-27 12:05:49

标签: android

假设我想根据以下条件为tablayout中的标签设置颜色 1.未选择的标签=蓝色 2.当前标签=绿色 3.选中标签=红色

这里使用以下代码更改未选中和当前选项卡的颜色

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- UNSELECTED TAB STATE -->
    <item android:state_selected="false" android:state_pressed="false">
        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
            <!-- Bottom indicator color for the UNSELECTED tab state -->
            <item android:top="-5dp" android:left="-5dp" android:right="-5dp">
                <shape android:shape="rectangle">
                    <stroke android:color="#65acee" android:width="2dp"/>
                </shape>
            </item>
        </layer-list>
    </item>
    <!-- Current TAB STATE -->
    <item android:state_selected="true" android:state_pressed="false">
        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
            <!-- Tab background color for the SELECTED tab state -->
            <item>
                <shape>
                    <solid android:color="#cef9ff"/>
                </shape>
            </item>
            <!-- Bottom indicator color for the SELECTED tab state -->
            <item android:top="-5dp" android:left="-5dp" android:right="-5dp">
                <shape android:shape="rectangle">
                    <stroke android:color="#5beea6" android:width="2dp"/>
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

但未能保留以前选择的标签

参考此image

汽车阅读处于选中状态 捕获照片和签名是未选择状态

我正在使用查看寻呼机...从汽车阅读转移到捕捉照片...汽车阅读背景应该是绿色

1 个答案:

答案 0 :(得分:0)

您无法使用选择器。因为一旦您选择新标签,Android会将旧标签标记为未选中。您需要做的是创建一个TabLayout.OnTabSelectedListener()然后在onTabSelected和onTabUnselected方法中,您可以获取选项卡的customView并在其上设置背景颜色。

注意:这需要您为标签设置自定义视图。否则,您无法以编程方式更改背景颜色。使用默认选项卡布局更改背景颜色的唯一方法是通过在您的情况下无法工作的样式。