2015-11-07 61 views
0

我的布局中有TabLayout和ViewPager,非常标准。 而我使用自定义视图为我的选项卡。 在活动onCreate方法我称之为: 带有自定义图标的TabLayout不会在开始时更改图标

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); 

这里是万亩可绘制什么样子:

<?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> 

我想告诉橙色的图标,如果选择了选项卡和灰色否则。 一切工作正常,除了一开始。如果我从标签之间切换一次 - 一切都很好:

enter image description here

enter image description here

但是,当活动刚开始 - 主页选项卡是不是 “选择”:

enter image description here

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

+0

你试过选择编程中'的onResume()'方法标签? – Antonio

回答

0

这里有一个答案:

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

甚至

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

这是不是故意的,我只是挖一点点在android系统的来源。

+0

只要是解决方案,回答自己的问题就没有问题。你甚至可以接受它。因为它对别人有用。 – hata

0

尝试:

Viewpage.setcurrentItem(0)结尾

+0

在这种情况下,我得到'java.lang.IndexOutOfBoundsException:在tabLayout.getTabAt(0).setCustomView'上无效索引0,大小为0' - 没有标签。 –

相关问题