Android选项卡布局setIcon方法仅在OnTabSelectedListener内部起作用

时间:2019-11-13 19:27:43

标签: android material-design android-tablayout androidx

我正在尝试在活动的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'

1 个答案:

答案 0 :(得分:0)

尝试调用setupWithViewPager方法后将图标设置为标签。

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