相关疑难解决方法(0)

如何使用选择器使用新的TabLayout更改图标

我正在使用Android的新支持TabLayout.问题是我想在选择标签时使用选择器来更改图标.

我一直在研究源代码,在我看来它永远不会改变视图的状态(因此我不能使用选择器).

有谁知道一些解决方法?

谢谢!

android material-design android-support-design

16
推荐指数
2
解决办法
2万
查看次数

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)

tabs android android-layout android-tablayout

3
推荐指数
1
解决办法
2297
查看次数