【问题标题】:Android Tab Layout setIcon method only works inside OnTabSelectedListenerAndroid 选项卡布局 setIcon 方法仅适用于 OnTabSelectedListener
【发布时间】:2020-03-09 16:06:31
【问题描述】:

我正在尝试在活动的onCreate 方法中使用此代码为我的选项卡布局的选项卡设置图标

tabLayout.getTabAt(0).setIcon(R.drawable.icon0);
tabLayout.getTabAt(1).setIcon(R.drawable.icon1);
tabLayout.getTabAt(2).setIcon(R.drawable.icon2);

因为它应该可以正常工作,因为类似的TabLayout.Tab 方法,例如

tabLayout.getTabAt(0).getOrCreateBadge().setNumber(number);

在完全相同的范围内做,它没有。

奇怪的是,如果我把它放在标签布局的 OnTabSelectedListener 中,同样的代码也可以工作

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {

        tabLayout.getTabAt(0).setIcon(R.drawable.icon0);
        tabLayout.getTabAt(1).setIcon(R.drawable.icon1);
        tabLayout.getTabAt(2).setIcon(R.drawable.icon2);

    }

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

    }

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

    }
});

据我所知,这背后没有任何逻辑。这是一个错误还是我错过了什么?如何在不使用监听器的情况下使用这些方法?

我使用这些版本的库:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.2.0-alpha01'

【问题讨论】:

  • edit 您的问题提供一个minimal reproducible example 来证明该问题。我们不知道这些Tabs 是在哪里创建的、它们链接到什么、它们是如何被修改的等等。

标签: android material-design android-tablayout androidx


【解决方案1】:

尝试在调用setupWithViewPager 方法后将图标设置为选项卡。

tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < tabLayout.getTabCount(); i++) {
  tabLayout.getTabAt(i).setIcon(R.drawable.your_icon);
}

【讨论】:

  • 同样的结果发生
猜你喜欢
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多