【问题标题】:TabLayout with custom icon doesn't change icon on start带有自定义图标的 TabLayout 在开始时不会更改图标
【发布时间】:2015-11-08 01:28:02
【问题描述】:

我的布局中有 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>

如果选择了选项卡,我想显示橙色图标,否则显示灰色。 一切都很好,除了一开始。如果我从一个标签导航到另一个标签 - 一切都很好:

但是当活动刚刚开始时 - 主页选项卡未“选中”:

我已经尝试过务实地选择标签 - 没有帮助。

【问题讨论】:

  • 您是否尝试过在onResume() 方法中以编程方式选择选项卡?

标签: java android android-tabs


【解决方案1】:

这是一个答案:

binding.tabs.getTabAt(0).getCustomView().setSelected(true);

甚至

int selectedTabPosition = binding.tabs.getSelectedTabPosition();
binding.tabs.getTabAt(selectedTabPosition).getCustomView().setSelected(true);

这不是故意的,我只是在android资源中挖掘了一点。

【讨论】:

  • 回答你自己的问题是没有问题的,只要它是一个解决方案。你甚至可以接受。因为它可能对其他人有用。
【解决方案2】:

试试:

Viewpage.setcurrentItem(0) 结束

【讨论】:

  • 在这种情况下,我在tabLayout.getTabAt(0).setCustomView 上得到java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 - 没有标签。
猜你喜欢
  • 2023-03-15
  • 2017-01-22
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多