Design Library TabLayout, el indicador de tabulación rebotando después de desplazarse

Estoy trabajando con TabLayout en dos instancias, PagerAdapter y FragmentStatePagerAdapter. En ambos casos, el indicador de tabulación rebota cuando se pasa entre páginas. El indicador de tabulación no se salta al hacer clic en tabuladores para cambiar las páginas.

No estoy seguro de si es un error de mi parte, es un problema conocido, o parte de las directrices. Si necesita más código, o el otro ejemplo lo publicaré.

FragmentStatePagerAdapter

mViewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { LogMeal log = mLogMealAdapter.getItem(position); return MealViewFragment.newInstance(log.getId()); } @Override public CharSequence getPageTitle(int position) { // Tab text LogMeal logMeal1 = mLogMealAdapter.getItem(position); String s; if (logMeal1.getMealName().toString().trim().length() > 12) { s = logMeal1.getMealName().substring(0, 12) + ".."; } else { s = logMeal1.getMealName(); } return s; } @Override public int getCount() { return mLogMealAdapter.getCount(); } }); tabs.setTabTextColors(Color.parseColor("#80ffffff"), Color.parseColor("#ffffff")); if (mLogMealAdapter.getCount() == 1) { tabs.setTabMode(TabLayout.MODE_FIXED); } else { tabs.setTabMode(TabLayout.MODE_SCROLLABLE); } tabs.setupWithViewPager(mViewPager); mViewPager.setCurrentItem(position); 

XML

 <RelativeLayout 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.v7.widget.Toolbar android:id="@+id/toolbar_meal_view" android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/primary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dp" android:layout_below="@+id/toolbar_meal_view" android:background="@color/primary" android:theme="@style/ToolbarTheme"/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/tabs"/> <LinearLayout android:layout_width="match_parent" android:layout_height="10dp" android:layout_below="@+id/tabs" android:background="@drawable/toolbar_shadow"/> </RelativeLayout> 

Recientemente tuve un problema similar.
Mi solución:

1) Cambiar tabs.setupWithViewPager(mViewPager); para

  \\ use own OnPageChangeListener mViewPager.addOnPageChangeListener(new MyPageScrollListener(mTabLayout)); \\ Manually add tabs, for example: mTabLayout.addTab(mTabLayout.newTab().setText(mViewPager.getAdapter().getPageTitle(0))); mTabLayout.addTab(mTabLayout.newTab().setText(mViewPager.getAdapter().getPageTitle(1))); \\ use own OnTabSelectedListener mTabLayout.setOnTabSelectedListener(new MyOnTabSelectedListener()); 

2) Añadir implementación para oyentes personalizados

  private class MyPageScrollListener implements ViewPager.OnPageChangeListener { private TabLayout mTabLayout; public MyPageScrollListener(TabLayout tabLayout) { this.mTabLayout = tabLayout; } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if(mTabLayout != null) { mTabLayout.getTabAt(position).select(); } } @Override public void onPageScrollStateChanged(int state) { } } private class MyOnTabSelectedListener implements TabLayout.OnTabSelectedListener { @Override public void onTabSelected(TabLayout.Tab tab) { int position = tab.getPosition(); if (mViewPager.getCurrentItem() != position) { mViewPager.setCurrentItem(position, true); } } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } } 

Espero que ayude.

Es un error en la biblioteca de soporte de diseño 22.2.0

Tal vez se arreglará. https://code.google.com/p/android/issues/detail?id=175073

El error de " rebote " del indicador se ha corregido en la versión 22.2.1 y superior.

Simplemente actualice su build.gradle :

 dependencies { //... compile 'com.android.support:design:22.2.1' } 
  • Fijas fijas en nuevo diseño de material android
  • Necesita una respuesta definitiva para diseñar las pestañas de Android ActionBar
  • Las pestañas TabHost de Android roban el enfoque al utilizar el teclado de hardware
  • ¿Debe un novato olvidarse de los fragmentos?
  • Comunicarse entre diferentes instancias del mismo fragmento
  • Android ViewPager obtiene la vista actual
  • ¿Las pestañas anidadas con el visor de desplazamiento en android?
  • Actionbarsherlock + tabs + multi fragmentos?
  • ¿Cómo agregar divider en el estilo de TabLayout de android? TabLayout es nuevo en la biblioteca de soporte de diseño
  • Cambiar el relleno de TextView en TabLayout
  • Android: conflicto de ID cuando se crean 3 pestañas o más
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.