java - 如何更改 TabLayout Android 的图标颜色
问题描述
我的班级有 3 个片段,如果我只想更改所选选项卡的图标颜色,我正在使用 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) {
}
});
我真的很感谢你所有的答案
解决方案
在可绘制文件夹中创建 tab_background.xml 搜索文件。在此代码文件中,您可以更改所选选项卡的颜色。
/drawable/tab_background.xml
推荐阅读
- java - 如何在数组中获得最小值
- coq - 如何在 Coq Software Foundations 中查找关键字的解释?
- java - 如何将几个参数移动到杰克逊的另一个节点?
- vba - VBA - 从 ASP 页面检索数据
- ffmpeg - 使用复杂过滤器 amerge 的 FFmpeg 无法在 iOS 上播放
- javascript - 如何在状态之间为图像设置动画
- ios - Scenekit 错误:C3DNode finalize 中发现的场景图不一致 - 无能为力
- python - Scrapy webscraping输出页面中缺少的元素
- c# - System.Collections.Immutable 容器,为什么要密封?
- sql - VB.NET SQL 查询失败。必须声明 Scalar 但它已经被删除