【发布时间】:2016-04-24 00:10:40
【问题描述】:
这是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);
这是我的 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" />
我也读过这个帖子:How do I change a tab background color when using TabLayout?,但这并不是我想要的。
线程说当你选择或取消选择它时它会改变整个标签的颜色。这意味着您会将图标后面的整个背景更改为不同的颜色,而我只希望图标具有较低的不透明度,而不是背景和图标具有较低的不透明度。
Whatsapp 没有这样做 - 您只能看到“呼叫”这个词被设置为较低的不透明度,而不是这个词背后的背景。
【问题讨论】:
-
“他们是怎么做到的?” -- a
ColorStateList的文字颜色是我的猜测。 “我只是希望图标具有较低的不透明度”——StateListDrawable将是图像的等效方法。 -
我尝试使用 StateListDrawable 但结果太复杂了。我改用了 Avinash 的提示,它成功了。
-
当然,Whatsapp 使用的是文本,而不是图标,所以他们可以使用setTabTextColors()