我正在使用Android的新支持TabLayout.问题是我想在选择标签时使用选择器来更改图标.
我一直在研究源代码,在我看来它永远不会改变视图的状态(因此我不能使用选择器).
有谁知道一些解决方法?
谢谢!
我正在尝试创建自定义选项卡布局,因为我需要在TextView. 我已经将 id 设置@android:id/text1为文档中提到的。
选择我的自定义选项卡时,不会自动更改 TextView 颜色。如何以正确和干净的方式实现它?
正确选择默认选项卡:
错误选择的自定义选项卡(文本为灰色但应为白色):
代码
PagerAdapter adapter = new MyAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
TabLayout.Tab tab = tabLayout.getTabAt(2);
if (tab != null) {
tab.setCustomView(R.layout.tab_proposed_rewards);
}
Run Code Online (Sandbox Code Playgroud)
布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:gravity="center"
android:textAppearance="@style/TextAppearance.Design.Tab"/>
<TextView
android:id="@+id/indicator"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/background_indicator"
android:gravity="center"
android:lines="1"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
编辑
回答:
tab.setCustomView(R.layout.tab_proposed_rewards);
ColorStateList textColor = tabLayout.getTabTextColors();
TextView textView = (TextView) tab.getCustomView().findViewById(android.R.id.text1);
textView.setTextColor(textColor);
Run Code Online (Sandbox Code Playgroud)