Android Swipe选项卡可自定义Tab Indicator颜色

时间:2015-07-29 18:19:59

标签: android android-actionbar

我需要更改标签指示颜色(见下图):

enter image description here

即使我遵循以下官方教程:https://developer.android.com/training/basics/actionbar/styling.html#CustomTabs我仍然无法使其发挥作用。

应用程序编译版本是: compileSdkVersion 22

应用程序主题是: Theme.AppCompat.Light.DarkActionBar

... res / values / styles.xml (主题自定义文件)

a = float(float(a)/float(3.0)) # still returns 0

... RES /抽拉/ tab_indicator_ab_example.xml

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorDark</item>
    <item name="android:actionBarTabBarStyle">@color/colorPrimary</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Example</item>
</style>

<!-- ActionBar tabs styles -->
<style name="ActionBarTabStyle.Example" parent="@style/Widget.AppCompat.Light.ActionBar.TabText">
    <item name="android:background">@drawable/tab_indicator_ab_example</item>
</style>

<color name="colorDark">#ff9800</color>
<color name="colorPrimary">#ffc107</color>
<color name="happy">#ffeb3b</color>
<color name="normal">#fff176</color>
<color name="sad">#fff59d</color>
</resources>

无法弄清问题在哪里,一切都编译没有错误,代码按照官方文档逐步进行。 THX。

5 个答案:

答案 0 :(得分:2)

你可以轻松尝试这个

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF"));
//Use Color Resource here or directly parse color just like this

答案 1 :(得分:1)

我在某些项目中使用了PagerSliderTabStrip。它易于设置和使用。

gradle文件:

compile 'com.jpardogo.materialtabstrip:library:1.1.0'

layout.xml文件:

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Activity.java:

// Initialize the ViewPager and set an adapter
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new TestAdapter(getSupportFragmentManager()));

// Bind the tabs to the ViewPager
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(pager);

要更改选择器的颜色,请使用:

PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.pstsIndicatorColor(yourColor); 

答案 2 :(得分:1)

如果您正在使用SlidingTabLayout类和SlidingTabStrip样式(Something like this),那么您只需调用名为setSelectedIndicatorColors(int... colors)的SlidingTabLayout类的方法,该参数就是一个数组,但是在数组中你可以只放一种颜色。因此,如果您想从SlidingTabLayout调用该方法,它将类似于:

int[] color = {Color.Pink, Color.Red, Color.Awesome};
//It could be only one color if you want

SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setSelectedIndicatorColors(color);

但是如果你按照上面链接的教程使用他的Tab实现样式,你就可以这样做。

注意:这是实现Material Design内容的推荐和支持方式。在更多Material Design Tuts上,只需谷歌关键字“Material Design Tab Tutorial Example”

答案 3 :(得分:1)

您可以使用以下代码更改标签指示符颜色:

    tabs = setCustomTabColorizer(new SlidingTabLayout.TabColorizer(){
    @override 
    public int getIndicatorColor(int position)
    return getResources().getColor(R.color.colorAccent);
    }
 )};

查看此示例教程:https://www.youtube.com/watch?v=WSaSNX5QI-E&index=27&list=PLonJJ3BVjZW6CtAMbJz1XD8ELUs1KXaTD

答案 4 :(得分:0)

为了避免所有复杂性,我建议使用PagerSlidingTabStrip

因为它非常易于使用并且还有很多自定义功能。通过这种方式,您可以像在Google Play应用中一样创建滑动标签。