2009-09-09 17 views
44

Estoy usando un TableLayout. Necesito tener desplazamiento horizontal y vertical para este diseño. De forma predeterminada, puedo obtener un desplazamiento vertical en la vista, pero el desplazamiento horizontal no funciona.¿Cómo puedo hacer que mi diseño se desplace horizontal y verticalmente?

Estoy usando Android SDK 1.5 r3. Ya lo he intentado android:scrollbars="horizontal".

He leído en algunos foros que en la actualización de cupcake, es posible el desplazamiento horizontal.

¿Cómo puedo hacer que mi diseño se desplace en ambas direcciones?

Respuesta

112

Pude encontrar una manera simple de lograr ambos comportamientos de desplazamiento.

Aquí es el xml para ello:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:scrollbars="vertical"> 

    <HorizontalScrollView 
     android:layout_width="320px" android:layout_height="fill_parent"> 

     <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/linlay" android:layout_width="320px" 
      android:layout_height="fill_parent" android:stretchColumns="1" 
      android:background="#000000"/> 

    </HorizontalScrollView> 

</ScrollView> 
+0

El desplazamiento horizontal va bien ... pero no hay barras de desplazamiento horizontales visibles ... ¿cómo podemos hacer eso ...? – Amit

+4

advertencia: esto puede ser una mala práctica. Vea esta pregunta/respuesta: http://stackoverflow.com/questions/4490821/scrollview-inside-scrollview#4492050 –

+4

@PedroLoureiro en realidad, la pregunta en el enlace que publicó se refiere a la combinación de 'ScrollView' con' ListView'. Esto es porque 'ListView' tiene un montón de optimizaciones que no funcionan bien con un' ScorollView' circundante. La respuesta publicada aquí no usa 'ListView', por lo que el argumento vinculado es irrelevante. –

0

En este post Scrollview vertical and horizontal in android se habla de una posible solución, citando:

Matt Clark ha construido una vista personalizada en base a la fuente de Android, y se parece funcionar perfectamente: http://blog.gorges.us/2010/06/android-two-dimensional-scrollview

Tenga en cuenta que la clase en esa página tiene un error al calcular el ancho horizontal de la vista. Una solución de Manuel Hilty es en los comentarios:

Solución: Reemplazar la instrucción de línea 808 por el siguiente texto:

final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.leftMargin + lp.rightMargin, MeasureSpec.UNSPECIFIED); 
0

Utilice esta:

android:scrollbarAlwaysDrawHorizontalTrack="true" 

Ejemplo:

<Gallery android:id="@+id/gallery" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scrollbarAlwaysDrawHorizontalTrack="true" /> 
1

es demasiado tarde, pero espero que su problema se resuelva rápidamente con este código. nada más que hacer simplemente ponga su código debajo de scrollview.

<HorizontalScrollView 
      android:id="@+id/scrollView" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"> 

      <ScrollView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
       //xml code 
      </ScrollView> 
    </HorizontalScrollView> 
Cuestiones relacionadas