繁体   English   中英

如何更改 TabLayout Android 的图标颜色

[英]How to change icon color of TabLayout Android

我的班级中有 3 个 Fragment,如果我只想更改所选选项卡的图标颜色,我会使用 TabLayout,该怎么做。 顺便说一下,下面是我的代码示例。 运行时获取值为 NULL 的错误代码

    TextView tabPendapatan = (TextView) LayoutInflater.from(requireContext()).inflate(R.layout.custom_tab, null);
    tabPendapatan.setText(getResources().getString(R.string.tab_perkiraan_pendapatan));
    tabPendapatan.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_pendapatan, 0, 0);
    content.tabLayout.getTabAt(0).setCustomView(tabPendapatan);

    TextView tabRiwayat = (TextView) LayoutInflater.from(requireContext()).inflate(R.layout.custom_tab, null);
    tabRiwayat.setText(getResources().getString(R.string.tab_riwayat_transaksi));
    tabRiwayat.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_riwayat, 0, 0);
    content.tabLayout.getTabAt(1).setCustomView(tabRiwayat);

    TextView tabMutasi = (TextView) LayoutInflater.from(requireContext()).inflate(R.layout.custom_tab, null);
    tabMutasi.setText(getResources().getString(R.string.tab_mutasi_rekening));
    tabMutasi.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_mutasi, 0, 0);
    content.tabLayout.getTabAt(2).setCustomView(tabMutasi);


    content.tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(content.viewPager) {
        @SuppressLint("ResourceType")
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            int tabIconActive = ContextCompat.getColor(requireContext(), R.color.tab_riwayat_aktif);
            int tabIconInactive = ContextCompat.getColor(requireContext(), R.color.tab_riwayat_nonaktif);

            
            switch (tab.getPosition()){
                case 0:
                    tab.getIcon().setColorFilter(tabIconActive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(1).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(2).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    break;
                case 1:
                    tab.getIcon().setColorFilter(tabIconActive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(2).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(0).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    break;
                case 3:
                    tab.getIcon().setColorFilter(tabIconActive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(0).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    content.tabLayout.getTabAt(1).getIcon().setColorFilter(tabIconInactive, PorterDuff.Mode.SRC_IN);
                    break;

        }
        @SuppressLint("ResourceType")
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

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

        }
    });

我真的很感谢你的所有回答

在 drawable 文件夹中创建 tab_background.xml 搜索文件。 在此代码文件中,您可以更改所选选项卡的颜色。

/drawable/tab_background.xml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM