2016-05-20 2 views
0

У меня есть макет вкладки с пользовательским макетом для вкладок. Я хочу, чтобы текст был белым, когда выбран вкладка, а серый, когда его нет, я достиг этого с помощью селектора состояний, и он отлично работает, когда я сдвигаюсь со вкладки на вкладке или когда я нажимаю на один, но я хочу, чтобы динамически изменять вкладку на кнопку мыши из фрагмента таким образом, я использую это:как перемещать цвет текста вкладки как индикатор?

MainActivity.viewPager.setCurrentItem(2); 

, когда я использую это, чтобы изменить на вкладке мой текст на вкладка не изменяется, но индикатор делает,

поэтому я попытался настроить переключатель (см. ниже) и называть его, когда я меняю табуляции следующим образом:

и это работает с вкладкой, которую я переместил, имеет белый текст, а вкладка, которую я перенес из текста, является серым, но если я нажму другую вкладку после использования моего переключателя, я получаю две вкладки с белым текстом (странно прокручивая не имеет этой проблемы и работает отлично), индикатор всегда находится в правильном положении, поэтому я задаюсь вопросом, знает ли кто-нибудь, могу ли я получить его (индикаторы), я все еще новичок во всем этом, поэтому, возможно, есть более простой ответить

большое спасибо

Heres мой переключатель .... на всякий случай! хахаха

public static void tabTitleColor(){ 
    int position2 = viewPager.getCurrentItem(); 
    switch (position2){ 
     case 0: 
      tabLayout.getTabAt(0).getCustomView().setSelected(true); 
      tabLayout.getTabAt(1).getCustomView().setSelected(false); 
      tabLayout.getTabAt(2).getCustomView().setSelected(false); 
      tabLayout.getTabAt(3).getCustomView().setSelected(false); 
      System.out.println("tab "+ position2); 
      break; 
     case 1: 
      tabLayout.getTabAt(1).getCustomView().setSelected(true); 
      tabLayout.getTabAt(0).getCustomView().setSelected(false); 
      tabLayout.getTabAt(2).getCustomView().setSelected(false); 
      tabLayout.getTabAt(3).getCustomView().setSelected(false); 
      System.out.println("tab "+ position2); 
      break; 
     case 2: 
      tabLayout.getTabAt(2).getCustomView().setSelected(true); 
      tabLayout.getTabAt(1).getCustomView().setSelected(false); 
      tabLayout.getTabAt(0).getCustomView().setSelected(false); 
      tabLayout.getTabAt(3).getCustomView().setSelected(false); 
      System.out.println("tab "+ position2); 
      break; 
     case 3: 
      tabLayout.getTabAt(3).getCustomView().setSelected(true); 
      tabLayout.getTabAt(1).getCustomView().setSelected(false); 
      tabLayout.getTabAt(2).getCustomView().setSelected(false); 
      tabLayout.getTabAt(0).getCustomView().setSelected(false); 
      System.out.println("tab "+ position2); 
      break; 
    } 
} 

добавлять мой селектор, как просил он живет в папке с именем цвета

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" android:color="@android:color/white" /> 
<item android:state_focused="true" android:color="@android:color/white" /> 
<item android:state_pressed="true" android:color="@android:color/white" /> 
<item android:color="#d1c9c9" /> 
</selector> 
+0

Попробуйте это tabLayout.setTabTextColors (Color.parseColor ("# 457815"), цвет .parseColor ("# 986527")); tabLayout.setSelectedTabIndicatorColor (Color.parseColor ("# 124595")); –

+0

им жаль спрашивать @Rakshit Nawani, но вы прочитали мой вопрос? моя главная проблема прямо сейчас меняет цвет назад после его изменения, когда вы нажимаете вкладку, если я прокручиваю через них вкладки меняют цвет, просто отлично, больше о получении выбранной вкладки, я думаю, надеюсь, что вы сможете помочь –

+0

Пожалуйста, покажите свой цвет state list – Karakuri

ответ

0

мне удалось решить эту проблему, в конце концов, избавляясь мой пользовательский вид, селектор и переключатель и используя некоторые пользовательские стили и изменить способ я изменял вкладки так что мой styles.xml выглядит следующим образом

<style name="CustomTabLayoutStyle" parent="Base.Widget.Design.TabLayout"> 
    <item name="tabSelectedTextColor">@color/selected_text</item> 
    <item name="tabIndicatorColor">@color/colorAccent</item> 
    <item name="tabTextAppearance">@style/CustomTabTexStyle</item> 
</style> 
<style name="CustomTabTexStyle" parent="TextAppearance.Design.Tab"> 
    <item name="android:textColor">@color/unselected_text</item> 
    <item name="textAllCaps">true</item> 
</style> 

добавил его к моему tablayout как этот

style="@style/CustomTabLayoutStyle" 

, а затем изменил способ я двигался вкладках этого

   TabLayout tabLayout = MainActivity.tabLayout; 
       TabLayout.Tab tab = tabLayout.getTabAt(0); 
       tab.select(); 

и все теперь работяга Dorey

Смежные вопросы