El desplazamiento de ViewPager no funciona con RecyclerView

Quiero implementar una navegación sencilla de desplazamiento con un ViewPager con fragmentos que contienen y administran un RecyclerView.

Los Fragmentos se crean y se pueden cambiar usando setCurrentItem() , pero no se puede desplazar a la izquierda oa la derecha para cambiar de página. El ViewPager parece ignorar cualquier gesto de deslizamiento.

Mi esquema de actividad:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize"/> <android.support.v7.widget.Toolbar ... /> </FrameLayout> 

Relleno el ViewPager usando un FragmentPagerAdapter en mi onCreate() así:

 viewPager = (ViewPager) findViewById(R.id.viewPager); viewPager.addOnPageChangeListener(this); viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { switch (position) { case 0: return new Dummy2Fragment(); case 1: return new Dummy2Fragment(); default: return null; } } @Override public int getCount() { return 2; } @Override public CharSequence getPageTitle(int position) { return "Dataset " + (position + 1); } }); 

El diseño del fragmento es un FrameLayout simple que envuelve un RecyclerView:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background_material_light"/> </FrameLayout> 

El adaptador y el gestor de diseño se establecen en onCreateView del fragmento:

 recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); recyclerView.setHasFixedSize(true); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 6, LinearLayoutManager.VERTICAL, false)); 

Editar # 1

Creo que no hice mi pregunta lo suficientemente clara.
Tengo un paginador de trabajo con un TabLayout de trabajo que se puebla por un 'FragmentPagerAdapter', significando que los fragmentos se crean correctamente y la disposición de la lengüeta visualiza una lengüeta clickable para cada artículo. Cada fragmento en este ViewPager muestra un RecyclerView con un GridLayoutManager .

Sin embargo, el ViewPager no parece recibir ningún gesto de deslizamiento, puede cambiar la posición seleccionada actual a través de TabLayout , pero no pasando por ejemplo de izquierda a derecha.
Parece que el RecyclerView consume todos los eventos de desplazamiento independientemente de la dirección de diseño, que se establece en vertical .

¿Algunas ideas?

Puedes usar tablayout con Viewpager como este

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> 

También establecido

  tabLayout = (TabLayout) rv.findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); 

Y el método setupWithViewPager es como

  private void setupViewPager(ViewPager viewPager) { adapter = new Adapter(getChildFragmentManager()); adapter.addFragment(new MatesListFragment(), "Mates"); adapter.addFragment(new FavoursListFragment(), "Favours"); adapter.addFragment(new FavemeListFragment(), "FavMe"); viewPager.setAdapter(adapter); } class Adapter extends FragmentPagerAdapter { private final List<Fragment> mFragments = new ArrayList(); private final List<String> mFragmentTitles = new ArrayList(); public Adapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment, String title) { mFragments.add(fragment); mFragmentTitles.add(title); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } public int getItemPosition(Object object) { return POSITION_NONE; } @Override public CharSequence getPageTitle(int position) { return mFragmentTitles.get(position); } } 

En MatesListFragment, FavoursListFragment etc. tienes tu diseño de RecyclerView

  • Android RecyclerView con SectionIndexer
  • ¿Cómo usar la API fluida de MvvmCross para enlazar TextView de un elemento de RecyclerView a una propiedad de su ViewModel en Android?
  • Los elementos de RecyclerView desaparecen después de cambiar entre fragmentos
  • RecyclerView onBindViewHolder sólo se llama cuando los cambios getItemViewType
  • Cómo abrir fragmento de RecyclerView.Adapter <CardAdapter.ViewHolder>
  • Obtener el elemento seleccionado y su posición en RecyclerView
  • ¿Qué es alertcontroller.recyclelistview
  • RecyclerView notifyItemRangeChanged no muestra nuevos datos
  • ScrollView vs RecyclerView para niños diferentes en Android
  • Facebook NativeAdsManager saliendo de la excepción de memoria en RecyclerView
  • Firebase RecyclerVisualización infinita
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.