java - 如何更改 TabLayout 选定选项卡的图标颜色?

标签 java android material-design android-tablayout

我正在使用带有 ViewPagerTabLayout,我想知道如何最有效地更改 TabLayout 中选定选项卡的图标颜色。

Google 的 Youtube 应用是如何实现的完美引用。在主页上,有四个深灰色的图标。选择特定选项卡时,该选项卡的图标变为白色。

没有任何第三方库,如何才能达到同样的效果?

一种可能的解决方案显然是使用选择器。但在这种情况下,我必须同时找到白色和灰色版本的图标,然后在选项卡被选中或取消选中时切换图标.我想知道是否有更有效的方法可以突出显示图标颜色或其他内容。我在任何教程中都找不到这个。

编辑

我上面直接提到的解决方案需要为每个选项卡的图标使用两个可绘制对象。我想知道是否有一种方法可以通过 ONE 为每个选项卡的图标绘制。

最佳答案

我找到了一种简单的方法。

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setOnTabSelectedListener(
            new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {

                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    super.onTabSelected(tab);
                    int tabIconColor = ContextCompat.getColor(context, R.color.tabSelectedIconColor);
                    tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
                }

                @Override
                public void onTabUnselected(TabLayout.Tab tab) {
                    super.onTabUnselected(tab);
                    int tabIconColor = ContextCompat.getColor(context, R.color.tabUnselectedIconColor);
                    tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
                }

                @Override
                public void onTabReselected(TabLayout.Tab tab) {
                    super.onTabReselected(tab);
                }
            }
    );

关于java - 如何更改 TabLayout 选定选项卡的图标颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562117/

相关文章:

java - 将字节缓冲区中的字节转换为整数

java - 错误 :android-apt plugin is incompatible with the Android Gradle plugin. 请改用 'annotationProcessor' 配置

android - 我可以从主线程访问共享首选项(保存/编辑)吗?

java - 创建视频文件的可播放预览

android - MaterialBetterSpinner FloatingLabel 动态或编程

android - TextInputLayout 提示左填充

java - 如何使用java中的一到两行代码将给定的Before链接转换为After链接?

java - 如何安装 spring-boot-starter-security 依赖项

java - 如何获取内部存储上文件的file.length? .length() 似乎不起作用

android - 抽屉导航中的切换按钮