我正在玩新的android.support.design.widget.TabLayout,并发现一个问题,在类定义中,没有方法可以更改指示器颜色和默认高度.
做一些研究,发现默认指示颜色取自AppTheme.具体来自这里:
<item name="colorAccent">#FF4081</item>
Run Code Online (Sandbox Code Playgroud)
现在,在我的情况下,如果我更改colorAccent,它将影响使用此值作为背景颜色的所有其他视图,例如ProgressBar
现在还有什么方法可以将indicatorColor更改为除此之外的其他东西colorAccent吗?
我TabLayout从com.android.support:design库中使用new .我想更改所选/未选定选项卡的背景.我查看源代码,发现只有tabBackground属性可以更改所有选项卡的颜色,并且不会控制选定的选项卡颜色.
如何控制选定/未选择的标签背景?
这是whatsapp应用程序。请注意,当您选择一个选项卡时,“CONTACTS”一词是白色的,而其他词 CALLS 和 CHATS 的 alpha 值可能为 50%:
他们是如何做到这一点的?
我想做一些类似的事情,但用图标而不是文字,但原理应该是一样的。我已经用我的 TabLayout 完成了以下操作:
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setTabGravity(tabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.icon1);
tabLayout.getTabAt(1).setIcon(R.drawable.icon2);
tabLayout.getTabAt(2).setIcon(R.drawable.icon3);
Run Code Online (Sandbox Code Playgroud)
这是我的 tabLayout 的 xml:
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#cccccc"
app:tabPaddingStart="-1dp"
app:tabPaddingEnd="-1dp" />
Run Code Online (Sandbox Code Playgroud)
我还阅读了此线程:如何在使用 TabLayout 时更改选项卡背景颜色?但这不完全是我想要的。
该线程表示,当您选择或取消选择它时,它会更改整个选项卡的颜色。这意味着您会将图标后面的整个背景更改为不同的颜色,而我只希望图标具有较低的不透明度,而不是背景和图标具有较低的不透明度。
Whatsapp 没有这样做 - 你只能看到“呼叫”这个词被设置为较低的不透明度,而不是这个词背后的背景。