2011-01-31 16 views
5

Me gustaría utilizar elementos de desplazamiento horizontall en una vista de lista de desplazamiento vertical.Android: ¿Cómo puedo hacer elementos desplazables horizontalmente en una vista de lista vertical?

Mi ingenua opinión sobre esto era poner el contenido de los elementos listview dentro de un scrollView. Los elementos son más amplios horizontalmente que la vista de desplazamiento, pero no más altos que la vista de desplazamiento. Dado que la vista de lista es una vista de lista de desplazamiento vertical normal, pensé que arrastrar verticalmente se desplazaría en la lista, mientras que arrastrar horizontalmente se desplazaría en los elementos.

Sin embargo, eso no funcionó. La lista se desplaza verticalmente y muestra los elementos correctamente, pero desplazarse horizontalmente no funciona (no ocurre nada). Lamentablemente, no estoy seguro de a dónde ir desde aquí.

Tenga en cuenta que los elementos se deben desplazar horizontalmente independientemente de los otros elementos, es decir, toda la lista no debe desplazarse lateralmente al arrastrar hacia los lados.

Como referencia, me gustaría que la lista se comportara de manera similar a lo que hace en la aplicación 'Pulse', en caso de que la haya visto.

Respuesta

3

Necesita usar un HorizontalScrollView. Droidstack es una aplicación de código abierto (escribí) que hace justamente esto (en las listas de preguntas puede desplazar las etiquetas en cada pregunta), si quiere un ejemplo concreto.

+0

¡Gracias, lo intentaré! –

+0

Haciendo eso, pierde la funcionalidad de clic de elemento ListView. En otras palabras, el clic en el contenido desplazable no se reenvía a Listview. –

2

si se siguen las buenas prácticas de desarrollo de Android, nunca se debe poner un ScrollView dentro de un ListView, es bu unrecomended Romain Guy y otras personas de desarrollo de Android, para leer los argumentos leído aquí: Android ScrollView layout problem

de la android docs:

"Nunca se debe usar un HorizontalScrollView con un ListView, ya que ListView se ocupa de su propio desplazamiento. Lo más importante es que esto elimina todas las optimizaciones importantes en ListView para lidiar con listas grandes, ya que fuerza al ListView a mostrar su lista completa de elementos para llenar el infinito contener er suministrado por HorizontalScrollView ".

EDITAR: parece que la advertencia publicada anteriormente es un error de la documentación de Android, hablando con algunos colegas me dijeron que es posible. El problema en la documentación está aquí, http://code.google.com/p/android/issues/detail?id=2781.

mis appologies

+0

Bien, pero ¿cuál es la alternativa entonces? –

+0

hablo con algunos colegas y me contó sobre un problema en la Documentación de Android, edité mi publicación, appologies – Franco

+0

Creo que esa cita intenta decir que no debe poner 'ListView' dentro de' ScrollView', no a la inversa alrededor, lo cual debería estar bien. – Felix

0

puede utilizar "ViewPager" cada elemento de la lista puede ser un ViewPager

6

Ordinario, ListView con cualquier adapter te gusta, pero diseñar la disposición elemento algo como esto:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

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

     <LinearLayout 
      android:id="@+id/lin" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <ImageView 
       android:id="@+id/icon" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_marginRight="6.0dip" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentBottom="true" 
       android:focusable="false" /> 

      <TextView 
       android:textAppearance="?android:textAppearanceMedium" 
       android:gravity="center_vertical" 
       android:id="@+id/text" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:singleLine="true" 
       android:layout_toRightOf="@id/icon" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentBottom="true" /> 

     </LinearLayout> 

    </HorizontalScrollView> 


</RelativeLayout> 

Tendrá Verticalmente Scrollable ListView con horizontalmente Scrollable elementos. Y los elementos se desplazan independientemente de otros artículos.

Cuestiones relacionadas