简体   繁体   English

具有自定义图标的TabLayout在启动时不会更改图标

[英]TabLayout with custom icon doesn't change icon on start

I have TabLayout and ViewPager in my layout, pretty standart. 我的布局中有TabLayout和ViewPager,很不错。 And I'm using custom views for my tabs. 我在选项卡上使用自定义视图。 In Activity onCreate method I call: 在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);

And here is how mu drawables look like: 这是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>

I want to show orange icon, if tab is selected and grey otherwise. 如果选择了选项卡,我想显示橙色图标,否则显示灰色。 And everything works fine except for very beginning. 除了开始以外,一切都正常。 If I navigate from tab to tab once - everything is fine: 如果我一次在标签之间导航-一切都很好:

在此处输入图片说明

在此处输入图片说明

But when activity just started - Home tab is not "selected": 但是当活动刚刚开始时-未“选择”“首页”标签:

在此处输入图片说明

I've already tried to select tab pragmatically - didn't help. 我已经尝试过实用地选择选项卡-没有帮助。

Here is an answer: 这是一个答案:

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

or even 甚至

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

It was not on purpose, I just dig a little in android sources. 这不是故意的,我只是在android源代码中进行了一些挖掘。

Try : 尝试:

Viewpage.setcurrentItem(0) at the end 最后是Viewpage.setcurrentItem(0)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM