2011-03-22 14 views
7

tengo la siguiente distribución:Cómo desplazamiento vertical una actividad en Android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:isScrollContainer="true"> 
    <Gallery android:id="@+id/gallery" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="bottom"/> 
    <LinearLayout android:id="@+id/chart" android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"   
    android:layout_weight="1" /> 
</LinearLayout> 

Galería se obtenga en tiempo de ejecución y cuando el usuario pulsa sobre un elemento lleno el LinearLayout con una serie de imágenes. Me gustaría desplazarme verticalmente pero si agrego un ScrollView cuando el usuario toca la Galería, LinearLayout ya no se llena.

¿Es normal? ¿Cómo puedo hacer para agregar desplazamiento vertical?

Gracias y saludos c.

+0

¿Podría explicarnos un poco más de lo que sucede cuando agrega ScrollView? –

+0

Cuando agrego ScrollView como elemento raíz, cuando el usuario toca un elemento de la galería no pasa nada y el diseño lineal no se completa con el contenido de la vista; intenté depurar y los objetos se manejan correctamente, pero cuando lo hago layout.addView (newView ...) la vista no se muestra – Cris

+0

¿Estás haciendo setContentView (R.id.my_layout) y luego tratando de ajustar eso en un ScrollView? No estoy seguro de por qué está llamando a addView. –

Respuesta

0

La vista de desplazamiento vertical solo puede tener un elemento secundario, lo que significa que debe envolver su vista de galería y la "gráfica" de vista lineal con otro linerLayout que luego debe estar envuelto con un scrollView.

Cuando agrega sus nuevas vistas, es posible que necesite actualizar el estado dibujable de la vista de desplazamiento o invalidarlo, intente algo así, para que se expanda en consecuencia.

13
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<ScrollView android:id="@+id/ScrlView" android:layout_width="fill_parent" android:layout_height="fill_parent" > 
<LinearLayout android:id="@+id/layoutForScroll" android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"   
    > 
    <Gallery android:id="@+id/gallery" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="bottom"/> 
    <LinearLayout android:id="@+id/chart" android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"   
    android:layout_weight="1" /> 
</LinearLayout> 
</ScrollView> 
</LinearLayout> 
0

Tiene que extender la clase Galería y en el procedimiento Dibujar girar el lienzo por 90 grados. Luego solo se requieren algunas adopciones, como la modificación del evento onTouch y algunas más. Después de esto, habrá algunos problemas con el diseño (ya que todavía desea dibujar en el diseño en sus parámetros). Así que lo puse dentro de LinearLayout y arreglé el tamaño del diseño en eso. Así que la galería vertical final es en realidad un diseño lineal que tiene una galería dentro. Lo he implementado, y funciona bastante bien. Solo tendrá que rotar todo lo que ponga en él en 90 grados en la otra dirección. La compensación es realmente un poco, por lo tanto, puede extender cada vista que desee poner dentro de ella y simplemente girarla hacia la otra dirección en el procedimiento de extracción.

Cuestiones relacionadas