2016-06-09 3 views
2

Я видел несколько приложений, плавно меняющих свой цвет индикатора (даже значки!) На вкладке, например, Facebook.Android - Плавный переход цвета индикатора TabLayout на слайде между вкладками

Это, как я это делаю в моем приложении:

tabLayout.setOnTabSelectedListener(
     new TabLayout.ViewPagerOnTabSelectedListener(searchViewPager) { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       super.onTabSelected(tab); 
       tabLayout.setSelectedTabIndicatorColor(getResources().getColor(indicatorColors[tab.getPosition()])); 
      } 
     }); 

Где indicatorColors массив нормального цвета, и, таким образом, она меняется только тогда, когда пользователь полностью пойлом на вкладку или выберите вкладку. Мне нужен переход сюда.

Что я могу сделать, чтобы добиться плавного перехода цвета от одного цвета к другому?

TabLayout связан с ViewPager.

+0

я не пробовал. Но я думаю, что это может быть достигнуто установкой ScrollListener на TabLayout или ViewPager. –

+0

Хм я только что просмотрел 'setOnScrollChangeListener', да, это можно сделать здесь, но для этого требуется API min 23, и я использую API min 17 .. Любой другой способ? –

+0

Я думаю, что это поможет: http://stackoverflow.com/a/14111712/5460053 –

ответ

0

Пожалуйста, попробуйте это.

...onCreate(){ 

... 
tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

@Override 
public void onTabChanged(String arg0) { 

    setTabColor(tabHost); 
} 
}); 
setTabColor(tabHost); 

... }

//Change The Backgournd Color of Tabs 

public void setTabColor(TabHost tabhost) { 

    for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) { 
    tabhost.getTabWidget().getChildAt(i).setBackgroundColor(COLOR_CYAN); 
    } 

    //unselected 

    if(tabhost.getCurrentTab()==0){ 
      tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_RED); //1st tab selected 
    } else { 
      tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_BLUE); //2nd tab selected 
    } 
} 
+0

Это почти то же самое, что я сейчас делаю .. Но это на вкладке изменено. И не используя 'TabLayout' –

+0

Ok , Тогда, пожалуйста, объясните, в чем проблема. – Phoenix

+0

Итак, я использую 'TabLayout' и хочу добавить плавный переход цвета с одной вкладки на другую вкладку, например:' светло-голубой' на 'синий' на' темно-синий' (представьте цвет градиента) при сдвиге с вкладки ' 0' на вкладку '1', то, что у меня есть, теперь' светло-голубой', чтобы 'темно-синий'. –

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