2015-08-06 1 views
2

Я попытался выяснить что-то нелепое в пользовательском текстовом виде tablayout. Когда я запускаю приложение, текстовое представление первой вкладки имеет цвет по умолчанию. Однако, когда я просматриваю другие вкладки и вернусь к первой вкладке, она работает правильно. Вот код.Tablayout с пользовательским текстовым просмотром, не изменил выбранный цвет состояния при первом запуске

selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_selected="true" 
      android:color="#FFFFFF"/> <!-- selected --> 
     <item android:color="@color/red_highlight"/> <!-- default --> 
</selector> 

MainActivity.java

tabLayout = (TabLayout) findViewById(R.id.tabs); 
tabLayout.setupWithViewPager(viewPager); 
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); 
tabLayout.getTabAt(0).setCustomView(R.layout.tab_custom_view); 
tabLayout.getTabAt(1).setCustomView(R.layout.tab_custom_view); 
tabLayout.getTabAt(2).setCustomView(R.layout.tab_custom_view); 

tab_custom_view.xml

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tab_tittle" 
     android:text="Tab1" 
     android:textStyle="bold" 
     android:textColor="@color/selector"/> 

Ели t, когда я запускаю приложение. после щелчка на других вкладках и возврата к первой вкладке он выбран в выбранном цвете. Но как должно быть, когда я запускаю приложение, первая вкладка выбирается и должна быть в выбранном цвете.

ответ

7

«state_selected» используется, когда элемент выбран с помощью клавиатуры/dpad/trackball/etc. Поэтому он не выбирается при запуске приложения, его выбирается при выборе вкладки.

+1

Да, вручную я установил его для параметра SetSelected (true). и он работает нормально. – Vrangle

+0

@ Vrangle, у меня есть эта проблема, и setSelected (true) делает вторую вкладку всегда выбранной. Можете ли вы объяснить, что вы делаете? – offset

+1

вы можете установить выбранное состояние для табуляции с этим кодом: 'tabLayout.getTabAt (0) .getCustomView(). SetSelected (true);' – sweetrenard