dentro android listview scrollbars

listview dentro de scrollview android



android ListView scrollbarStyle (3)

Aquí hay un pequeño ejemplo más detallado. Configuré colores de fondo para que sea más obvio lo que está sucediendo aquí.

Primero, los colores:

  • negro - márgenes
  • blanco - relleno
  • gris: el contenido de la vista de desplazamiento
  • verde: la barra de desplazamiento si ocupa su propio espacio (lo agregué explícitamente como scrollbarTrackVertical para los dos ejemplos de "inserción")

Vamos a definir dos secciones:

  • "área de contenido": lo que se mostrará en la vista de desplazamiento
  • "relleno": el espacio alrededor del contenido de la vista de desplazamiento

Pensemos en las dos partes del scrollBarStyle separado:

  • inside : la barra de desplazamiento aparece dentro del área de contenido (el relleno se ajusta tanto al contenido como a la barra de desplazamiento)

  • outside : la barra de desplazamiento aparece fuera del área de contenido

  • overlay : la barra de desplazamiento se superpone al borde derecho de la sección en la que se encuentra

  • inset : la barra de desplazamiento empuja la sección hacia la izquierda, ocupando su propio espacio

El diseño xml aparece a continuación

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" > <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbarStyle="insideOverlay" android:background="#fff" android:fadeScrollbars="false" android:layout_margin="8dp" android:padding="16dp" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#aaa" > <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideOverlay"/> </LinearLayout> </ScrollView> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbarStyle="insideInset" android:background="#fff" android:scrollbarTrackVertical="@drawable/green_block" android:fadeScrollbars="false" android:layout_margin="8dp" android:padding="16dp" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#aaa" > <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="insideInset" /> </LinearLayout> </ScrollView> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbarStyle="outsideOverlay" android:background="#fff" android:fadeScrollbars="false" android:layout_margin="8dp" android:padding="16dp" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#aaa" > <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideOverlay" /> </LinearLayout> </ScrollView> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:background="#fff" android:layout_weight="1" android:scrollbarStyle="outsideInset" android:scrollbarTrackVertical="@drawable/green_block" android:fadeScrollbars="false" android:layout_margin="8dp" android:padding="16dp" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#aaa" > <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> <TextView android:textSize="32sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="outsideInset" /> </LinearLayout> </ScrollView> </LinearLayout>

¿Alguien sabe de alguna documentación en el android: scrollbarStyle? Me gustaría ver ejemplos de cada uno de los 4 valores con capturas de pantalla si es posible. Veo la diferencia entre los tipos externos e internos, pero ¿de qué se tratan las partes de Inset & Outset? No parece ver una diferencia entre insideOutset y insideInset por ejemplo, del mismo modo, no veo la diferencia entre outsideOutset y outsideOutset.

¡gracias por adelantado! Ben


Las respuestas anteriores no funcionaron para mí, así que se me ocurrió lo siguiente:

Si esto es lo que quieres lograr, aquí va:

Vista de la lista:

<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbarStyle="outsideOverlay" android:scrollbarThumbVertical="@drawable/scrollbar" />

Barra de desplazamiento dibujable:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" android:width="20dp"/> <item android:drawable="@android:color/holo_red_dark" android:right="18dp" /> </layer-list>

Gracias a esta respuesta


No hay valores como outsideOutset y insideOutset. Los posibles cuatro valores son insideOverlay, insideInset, outsideOverlay, outsideInset
la documentación está allí en los siguientes dos enlaces ...

http://developer.android.com/reference/android/view/View.html#attr_android:scrollbarStyle

http://developer.android.com/reference/android/view/View.html#SCROLLBARS_INSIDE_INSET

No pude entender la documentación correctamente. Así que tomando como referencia la demostración de la barra de desplazamiento ApiDemos, probé esto. Pero descubrí que no hay diferencia en insideInset y outsideOverlay .
Estos dos valores son diff, o bien debe tener ambos como Inset o Overlay

actualizado scrollbar3.xml es

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ScrollView android:id="@+id/view1" android:layout_width="100dip" android:layout_height="120dip" android:padding="8dip" android:scrollbarStyle="insideOverlay" android:background="@android:color/white" android:overScrollMode="never"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#ffffff" android:background="@android:color/darker_gray" android:text="@string/scroll_text" /> </ScrollView> <ScrollView android:id="@+id/view2" android:layout_width="100dip" android:layout_height="120dip" android:padding="8dip" android:scrollbarStyle="insideInset" android:background="@android:color/white" android:overScrollMode="never"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#ffffff" android:background="@android:color/darker_gray" android:text="@string/scroll_text" /> </ScrollView> <ScrollView android:id="@+id/view3" android:layout_width="100dip" android:layout_height="120dip" android:padding="8dip" android:scrollbarStyle="outsideOverlay" android:background="@android:color/white" android:overScrollMode="never"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#ffffff" android:background="@android:color/darker_gray" android:text="@string/scroll_text" /> </ScrollView> <ScrollView android:id="@+id/view4" android:layout_width="100dip" android:layout_height="120dip" android:padding="8dip" android:scrollbarStyle="outsideInset" android:background="@android:color/white" android:overScrollMode="never"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#ffffff" android:background="@android:color/darker_gray" android:text="@string/scroll_text" /> </ScrollView></LinearLayout>

Espero que alguien vea esto y aclare ...