如何更改SlidingTabLayout的文本颜色?


问题内容

我制作了一个使用 ActionBarCompat* 的应用程序 *

我使用 SlidingTabLayout 类创建了选项卡。

该类是这样的:

SlidingTabLayout.java

但我无法更改标签的颜色…

我的viewpager片段是这样的:

<swmovil.fyb.SlidingTabLayout
    android:id="@+id/mTabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

<android.support.v4.view.ViewPager
    android:id="@+id/mPager"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="1"
    android:background="@color/white" />

该应用程序运行良好,但我无法更改标签的 颜色文本

看到以下示例后,我制作了该应用程序:

rudsonlive /导航抽屉-ViewPager-ActionBarCompat

如何更改标签文本的文本颜色?

谢谢 !!!


问题答案:

1)首先在res(/ res / color)下创建color文件夹
2)在/ res / color文件夹下创建xml文件selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/white" />
<item android:state_focused="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:color="@android:color/white" />
<item android:color="#504f4f" /> 
</selector>

3)然后在SlidingTabLayout的populateTabStrip()方法中

tabTitleView.setTextColor(getResources().getColorStateList(R.color.selector));

现在您有了选择器,可以在任何需要的事件上更改文本的颜色

如果这样不起作用,请添加以下代码行。
a)最后在populateTabStrip()方法中添加此内容

if (i == mViewPager.getCurrentItem()) {
    tabView.setSelected(true);
}

和b)将onPageSelected()方法更改为此

    @Override
    public void onPageSelected(int position) {
        if (mScrollState == ViewPager.SCROLL_STATE_IDLE) {
            mTabStrip.onViewPagerPageChanged(position, 0f);
            scrollToTab(position, 0);
        }
        for (int i = 0; i < mTabStrip.getChildCount(); i++) {
            mTabStrip.getChildAt(i).setSelected(position == i);
        }
        if (mViewPagerPageChangeListener != null) {
            mViewPagerPageChangeListener.onPageSelected(position);
        }
    }