2016-05-17 10 views
1

android.support.design.widget.TabLayout не работает должным образом с ViewPager Если я устанавливаю tabLayout.setupWithViewPager (viewPager); то показ табуляции не отображается, пожалуйста, найдите прилагаемые скриншоты.android.support.design.widget.TabLayout не работает должным образом с ViewPager

enter image description here

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:fitsSystemWindows="false" 
android:orientation="vertical" 
tools:context=".home.HomeActivity" 
tools:showIn="@layout/activity_home"> 

<android.support.design.widget.TabLayout 
    android:id="@+id/tab_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="6dp" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/tab_layout"/> 

фрагмент кода:

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.feeds)));  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.following)));  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.you))); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    final ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager); 
    final PageAdapter adapter = new PageAdapter(getChildFragmentManager(), 3); 
    viewPager.setOffscreenPageLimit(3); 
    viewPager.setAdapter(adapter); 
    tabLayout.setupWithViewPager(viewPager); 

Когда удалить "tabLayout.setupWithViewPager (ViewPager);" вид работает нормально. Но мне нужно переместить соответствующий фрагмент, щелкнув соответствующую вкладку.

enter image description here

+2

смотреть мой этот ответ [Нажмите здесь] (http://stackoverflow.com/a/37249218/5148289) Я уверен, что это будет помогите вам. –

+0

@vrund, Спасибо! Его работала –

+0

рада слышать, что .. –

ответ

2

В моем случае я решил эту проблему путем замены,

tabLayout.setupWithViewPager(viewPager); 

По,

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(
         tabLayout)); 
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

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

      } 

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

      } 
}); 

Надеюсь, это поможет вам.

0

попробовать это
добавить это ViewPager.

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Также следует родителю в качестве координатора макете только тогда скроллинг будет работать нормально

См здесь: http://coderzpassion.com/working-appbarlayout-like-whatsapp/

0

Краткая версия решения (Навин Кумар M):

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

Incase, если вы используете tabLayout внутри фрагмента попробовать этот ответ

возможная ошибка

вам необходимо пройти getChildFragmentManager () до FragmentPagerAdapter

не getSupportFragmentManager() или getFragme ntManager()

//wrong one 
ViewPagerAdapter adapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager()); 
//correct one 
ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 

ViewPagerAdapter является FragmentPagerAdapter

public class ViewPagerAdapter extends FragmentPagerAdapter { 

} 
+0

Я уже добавил 'getChildFragmentManager()' в код, пожалуйста, посмотрите на код, Это не точный ответ на этот вопрос. –

+0

@NaveenKumarM PLS снова читает. Если кто-то ошибочно использует getFragmentManager() или getSupportFragmentManager(), вкладка не работает во фрагментах. Вот почему я отвечаю. Если вы уже используете getChildFragmentManager() -> это не для вас. Пожалуйста, обратитесь к другим ответам. –

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