带有自定义图标的 TabLayout 在开始时不会更改图标
TabLayout with custom icon doesn't change icon on start
我的布局中有 TabLayout 和 ViewPager,非常标准。
我正在为我的选项卡使用自定义视图。
在 Activity onCreate 方法中,我调用:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
setupViewPager(binding.viewpager);
binding.tabs.setupWithViewPager(binding.viewpager);
tabLayout.getTabAt(0).setCustomView(R.layout.tab).setText(R.string.tab_home)
.setIcon(R.drawable.tab_home_icon).setTag(HOME_TAG);
tabLayout.getTabAt(1).setCustomView(R.layout.tab).setText(R.string.tab_games)
.setIcon(R.drawable.tab_games_icon).setTag(GAMES_TAG);
mu 可绘制对象的外观如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_home_active" android:state_selected="true" />
<item android:drawable="@drawable/tab_home" />
</selector>
我想显示橙色图标,如果选项卡是 selected,否则是灰色的。
除了一开始,一切都很好。如果我一次从一个选项卡导航到另一个选项卡 - 一切都很好:
但是 activity 刚开始时 - 首页选项卡不是 "selected":
我已经尝试 select tab 实用 - 没有帮助。
这是一个答案:
binding.tabs.getTabAt(0).getCustomView().setSelected(true);
甚至
int selectedTabPosition = binding.tabs.getSelectedTabPosition();
binding.tabs.getTabAt(selectedTabPosition).getCustomView().setSelected(true);
这不是故意的,我只是在 android 来源中挖掘了一点。
尝试:
Viewpage.setcurrentItem(0) 最后
我的布局中有 TabLayout 和 ViewPager,非常标准。 我正在为我的选项卡使用自定义视图。 在 Activity onCreate 方法中,我调用:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
setupViewPager(binding.viewpager);
binding.tabs.setupWithViewPager(binding.viewpager);
tabLayout.getTabAt(0).setCustomView(R.layout.tab).setText(R.string.tab_home)
.setIcon(R.drawable.tab_home_icon).setTag(HOME_TAG);
tabLayout.getTabAt(1).setCustomView(R.layout.tab).setText(R.string.tab_games)
.setIcon(R.drawable.tab_games_icon).setTag(GAMES_TAG);
mu 可绘制对象的外观如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_home_active" android:state_selected="true" />
<item android:drawable="@drawable/tab_home" />
</selector>
我想显示橙色图标,如果选项卡是 selected,否则是灰色的。 除了一开始,一切都很好。如果我一次从一个选项卡导航到另一个选项卡 - 一切都很好:
但是 activity 刚开始时 - 首页选项卡不是 "selected":
我已经尝试 select tab 实用 - 没有帮助。
这是一个答案:
binding.tabs.getTabAt(0).getCustomView().setSelected(true);
甚至
int selectedTabPosition = binding.tabs.getSelectedTabPosition();
binding.tabs.getTabAt(selectedTabPosition).getCustomView().setSelected(true);
这不是故意的,我只是在 android 来源中挖掘了一点。
尝试:
Viewpage.setcurrentItem(0) 最后