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) { } 
  • Solicitud de Android KSOAP2 al servidor SOAP de PHP
  • HorizontalScrollView puede alojar sólo un hijo directo
  • LockCanvas () devuelve diferentes lienzos
  • Android VpnService proteger socket que se almacena en código nativo?
  • Denotan progreso por el borde de Android
  • ¿Qué versión de Apache HTTP Client está incluida en Android 1.6?
  • Grabación cifrada y carga descifrada de un ArrayList de objetos serializables
  • No se encontró ninguna implementación para Native UnsatisfiedLinkError Exception Android JNI
  • Comprobar si la notificación de mi aplicación se está ejecutando
  • ¿Cómo puedo analizar una suite de pruebas junit?
  • PreferenceFragment es compatible con todos los problemas de API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.