TabWidget envuelto en HorizontalScrollView no se desplaza con ViewPager

Tengo que usar TabHost en lugar de ActionBarTabs y para hacerlos scroll-able He envuelto mi TabWidget en un HorizontalScrollView , pero el HorizontalScrollView no se desplaza de acuerdo con ViewPager . He intentado usar scrollTo y fullScroll en un par de maneras diferentes, pero no cambia nada. ¿Qué debo hacer para que funcione correctamente?

 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:id="@id/horizontalScrollView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="@null" > <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> </HorizontalScrollView> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> <android.support.v4.view.ViewPager android:id="@id/viewPager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> 

  @Override public void onTabChanged(String tabId) { int position = mTabHost.getCurrentTab(); mViewPager.setCurrentItem(position); mHorizontalScrollView.scrollTo(position, 0); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { mHorizontalScrollView.scrollTo(position, 0); } 

2 Solutions collect form web for “TabWidget envuelto en HorizontalScrollView no se desplaza con ViewPager”

La vista de desplazamiento horizontal cambiará cuando llame a .refreshDrawableState() después de llamar al .scrollTo(x,y) .

Otra cosa a tener en cuenta es que .scrollTo(x,y) desplaza de tal manera que x se coloca en el lado izquierdo de la pantalla. Puede que tenga que hacer algunas matemáticas con las coordenadas de las pestañas y el ancho de la vista de desplazamiento horizontal para colocar las cosas correctamente. No puede llamar a .scrollTo(position,0) y hacer que funcione de la manera que desee (a menos que sus pestañas tengan 1 píxel de ancho).

ViewPager tiene los cerebros para el comportamiento de desplazamiento.

Quiero quitar el HorizontalScrollView de su diseño. El resto parece estar bien.

A continuación, examinaría este ejemplo de código proporcionado por Google, con el que he basado una interfaz de ViewPager como desea llevar a cabo en: http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app /FragmentTabsPager.html

Notará que los métodos correspondientes que declaró anteriormente no tienen nada que ver con el desplazamiento, aparte de establecer qué página desplazarse. ViewPager maneja el desplazamiento suave internamente.

  @Override public void onTabChanged(String tabId) { int position = mTabHost.getCurrentTab(); mViewPager.setCurrentItem(position); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } 
  • ¿Es este método más rápido que Math.random ()?
  • RecyclerView muestra los datos eliminados en la lista
  • Android: fija el elemento fijo en RecyclerView
  • ¿Cómo crear un par de claves ECDSA (256bit) para la curva bitcoin (secp256k1) usando castillo esponjoso?
  • ¿Cómo repetir una tarea después de una cantidad fija de tiempo en android?
  • ¿Pueden los recursos de ID de Android referirse hacia adelante?
  • Android AudioRecord leer siempre devuelve -3 (ERROR_INVALID_OPERATION)
  • Marcadores del centro API V2 de Google maps
  • Cómo escribir en una hoja de Google desde la aplicación de Android mediante programación
  • ¿Enfoques al error de desajuste de estado de MediaPlayer de Android en isPlaying ()?
  • Cambiar la configuración de WiFi en Android 5 (L) mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.