1

Я хочу использовать TabLayout с TabItem с помощью следующего кода:Как синхронизировать TabLayout с ViewPager при использовании TabItem

<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/color_primary" 
     app:tabGravity="fill" 
     app:tabIndicatorColor="@color/white" 
     app:tabMode="fixed" 
     app:tabSelectedTextColor="@color/white" 
     app:tabTextColor="@color/gray_light"> 

     <android.support.design.widget.TabItem 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:icon="@drawable/ic_language" /> 


     <!-- other tabs ... --> 


    </android.support.design.widget.TabLayout> 

И это мне показать значки правильно так:

enter image description here

Но проблема в том, когда я хочу добавить свой TabLayout в ViewPager, со следующим кодом, все они существуют и доступны, но исчезают. Я что-то пропустил?

MyPagerAdapter adapter = new MyPagerAdapter(getFragmentManager()); 
pager.setAdapter(adapter); 

tabLayout.setupWithViewPager(pager); 

и это результат:

enter image description here

ответ

5

Что tabLayout.setupWithViewPager(pager) собирается сделать вызов getPageTitle() на адаптере зрения пейджера и создавать вкладки со строками, которые возвращаются. Я бы рекомендовал не звонить setupWithViewPager(). Затем вам нужно будет сделать две вещи:

  • viewPager.addOnPageChangeListener вызов с OnPageChangeListener реализации, который будет выбрать вкладку, основываясь на выбранной странице.

  • Позвоните tabLayout.setOnTabSelectedListener с помощью функции OnTabSelectedListener, которая будет называть viewPager.setCurrentPage() с выбранным номером табуляции.

Просто убедитесь, что ваш PagerAdapter подсчет совпадает с количеством вкладок в вашем TabLayout.

+0

Спасибо и хорошая работа многоборье. Я думаю, что это грязный способ справиться с этим. Но это решает проблему: D – Amir

4

Это полезно:

/////// Syncing !!!

Заменить

setupWithViewPager(); 

С

tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); 
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout)); 
+0

почему вы так говорите? –

+0

Это может помочь другим людям! @ Pierre.Vriens –