我正在使用a TabLayout,ViewPager我想知道如何最有效地更改TabLayout中所选标签图标的颜色.
谷歌的Youtube应用程序是如何实现这一功能的完美参考.在主页面上,有四个图标为深灰色.选择特定选项卡后,选项卡的图标将变为白色.
没有任何第三方库,我怎样才能达到同样的效果?
一种可能的解决方案显然是选择器.但在这种情况下,我必须找到图标的白色和灰色版本,然后在选中或取消选择选项卡时切换图标.我想知道是否有更有效的方法我可以突出显示图标颜色或其他东西.我在任何教程中都找不到这个.
编辑
我上面直接提到的解决方案需要为每个标签的图标使用两个drawable.我想知道是否有一种方法可以通过一个 drawable为每个标签的图标以编程方式进行.
我有一个TabLayout(设计支持库),它与包含三个选项卡的ViewPager绑定在一起.我设计了一个自定义布局,并将其设置为TabLayout中的每个选项卡.我一直在尝试更改当前所选选项卡的背景颜色.颜色仅包含在选项卡中的文本周围,但不占用整个选项卡空间.
以下是我的活动和自定义布局文件的代码段.
活动代码
public class CustomTabLayoutActivity extends AppCompatActivity {
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_tab_layout);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
setupTabLayout();
viewPager.setCurrentItem(0);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
if (i == position) {
tabLayout.getTabAt(i).getCustomView().setBackgroundColor(Color.parseColor("#198C19"));
} else {
tabLayout.getTabAt(i).getCustomView().setBackgroundColor(Color.parseColor("#f4f4f4"));
}
}
}
@Override
public void …Run Code Online (Sandbox Code Playgroud)