0

Screen shot of Tab where text color remains highlighted Я работаю с пейджером android view. В XML на закладку макета я установить tablayout с этим кодомПросмотреть текст макета вкладки пейджера не обновляется

 `<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabBackground="@color/LightGrey" 
     app:tabIndicatorColor="@color/app_highlight_color" 
     app:tabIndicatorHeight="3dp" 
     app:tabTextAppearance="@style/MyCustomTextAppearance" 
     app:tabSelectedTextColor="@color/app_highlight_color" 
     app:tabGravity="fill"/>` 

вопросом является при изменении ViewPager Страницы/фрагмента с взмахом влево/вправо он работает нормально и изменить цвет текста вкладки из нормального выделены и наоборот.

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

private void setupTabLayout() { 
tabLayout.setTabTextColors(R.color.LightGrey,R.color.app_highlight_color); 
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 


      //tab.setCustomView(R.drawable.tab_trending_selected); 
      switch (tab.getPosition()) { 
       case AppConstants.TRENDING_INDEX: 
        tab.setIcon(R.drawable.tab_trending_selected); 
        tab.select(); 

        break; 
       case AppConstants.DUB_INDEX: 
        tab.setIcon(R.drawable.tab_dub_selected); 
        tab.select(); 
        break; 
       case AppConstants.PROFILE_INDEX: 
        tab.setIcon(R.drawable.tab_profile_selected); 
        tab.select(); 
        break; 
       default: 
        break; 
      } 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

      switch (tab.getPosition()) { 
       case AppConstants.TRENDING_INDEX: 
        tab.setIcon(R.drawable.tab_trending_unselected); 
        //tab.setText("Trending"); 

        break; 
       case AppConstants.DUB_INDEX: 
        tab.setIcon(R.drawable.tab_dub_unselected); 
        // tab.setText("Dub"); 
        break; 
       case AppConstants.PROFILE_INDEX: 
        tab.setIcon(R.drawable.tab_profile_unselected); 
        // tab.setText("Profile"); 
        break; 
       default: 
        break; 
      } 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
    tabLayout.setTabTextColors(getResources().getColor(R.color.Gray),  getResources().getColor(R.color.app_highlight_color)); 
    tabLayout.getTabAt(AppConstants.TRENDING_INDEX).setIcon(R.drawable.tab_trending_selected); 
    tabLayout.getTabAt(AppConstants.DUB_INDEX).setIcon(R.drawable.tab_dub_unselected); 
    tabLayout.getTabAt(AppConstants.PROFILE_INDEX).setIcon(R.drawable.tab_profile_unselected); 

    tabLayout.getTabAt(AppConstants.TRENDING_INDEX).select(); 


} 
+0

Добавить tabLayout.getTabAt (position) .select(); –

+0

Цвет текста вкладки не меняется, когда я меняю страницу, нажав на любую вкладку в tablayout –

+0

удалите "tabLayout.setTabTextColors (R.color.LightGrey, R.color.app_highlight_color);" эту строку и проверить –

ответ

0

Столкнувшись уникальной проблемы. Когда мы устанавливаем setCurrentItem. Он не меняет вкладку tablayout. Затем вам нужно добавить AddOnPageChangeListener на viewpager, в котором вам нужно выбрать вкладку tablayout вручную для выбранной позиции viewpager. Затем setupWithViewPager.

Добавить этот код в ваш прогнозPage, это сработало для меня.

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 

      tabLayout.getTabAt(position).select(); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
     } 
    }); 

    /* 
     NOTE: This is setup after addOnPageChangeListener. Don't know why but this is what works. Otherwise tabLayout.does not select. 
    */ 
    tabLayout.setupWithViewPager(this.viewPager); 
+0

Цвет текста вкладки не меняется, когда я меняю страницу, нажимая любую вкладку в tablayout –

0

Попробуйте это:

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int pos) { 
// set the title 
     ab.setSelectedNavigationItem(pos); 
     ab.setTitle(titles[pos]); 
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 

    } 
}); 
0

Используйте некоторые вещи, как это.

<style name="CustomTabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabIndicatorColor">@color/colorAccent</item> 
    <item name="tabSelectedTextColor">@color/colorAccent</item> 
    <item name="tabTextAppearance">@style/CategoryTabTextAppearance</item> 
    <item name="tabBackground">@color/colorPrimary</item> 
</style> 

<style name="CategoryTabTextAppearance" parent="TextAppearance.Design.Tab"> 
    <item name="android:textColor">@color/secondaryText</item> 
</style> 
Смежные вопросы