2015-11-07 69 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' - 沒有標籤。 –

相關問題