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.
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)
它最终在设计支持库 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)
| 归档时间: |
|
| 查看次数: |
4811 次 |
| 最近记录: |