[英]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.