尝试更改文本颜色时,TabLayout.setTabTextColors()无法正常工作

Ale*_*ois 9 android android-support-library android-design-library android-tablayout

我有一个工作TabLayout,我正在尝试动态更新选项卡文本颜色,更改选项卡时.为此,我setTabTextColors()在我的TabLayout上调用方法:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        tabLayout.setTabTextColors(newColorStateList);
    }

    (...)
});
Run Code Online (Sandbox Code Playgroud)

由于某种原因,文本颜色不会更新.有谁知道如何动态更新标签文本颜色?

我正在使用Design Support Library v22.2.0.

Pra*_*ena 7

TabLayout 有一个这样的方法 -

setTabTextColors(int normalColor, int selectedColor)
Run Code Online (Sandbox Code Playgroud)

请记住,这int不是颜色资源值,而是int从十六进制解析

前任:

tabLayout.setTabTextColors(Color.parseColor("#D3D3D3"),Color.parseColor("#2196f3"))
Run Code Online (Sandbox Code Playgroud)


mtr*_*kal 4

它最终在设计支持库 22.2.1 中得到修复。

        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
          @Override
          public void onTabSelected(TabLayout.Tab tab) {
            tabLayout.setTabTextColors(getResources().getColor(R.color.normal), getResources().getColor(R.color.selected));

            try {
                // FIXME: 20.7.2015 WORKAROUND: https://code.google.com/p/android/issues/detail?id=175182 change indicator color
                Field field = TabLayout.class.getDeclaredField("mTabStrip");
                field.setAccessible(true);
                Object value = field.get(tabLayout);

                Method method = value.getClass().getDeclaredMethod("setSelectedIndicatorColor", Integer.TYPE);
                method.setAccessible(true);
                method.invoke(value, getResources().getColor(R.color.selected));
            } catch (Exception e) {
                e.printStackTrace();
            }
          }

        ...
        }
Run Code Online (Sandbox Code Playgroud)