Pregunta ¿Cómo agrego barras de desplazamiento a LinearLayout en Android?


¿Cómo agrego barras de desplazamiento a una vista en Android?

Intenté agregando android:scrollbars:"vertical" al LinearLayout en mi archivo XML de diseño, pero no está funcionando.

Creí que las barras de desplazamiento se dibujaban de forma predeterminada en Android, pero no parece ser así. Parece que tenemos que dibujarlo nosotros mismos, ¿cómo hago esto?


17
2018-04-14 09:57


origen


Respuestas:


No puede agregar barras de desplazamiento a un LinearLayout porque no es un contenedor desplazable.

Solo contenedores desplazables como ScrollView, HorizontalScrollView, ListView, GridView, ExpandableListView mostrar barras de desplazamiento

Te sugiero que coloques tu LinearLayout dentro de una ScrollView que mostrará de forma predeterminada barras de desplazamiento verticales si hay suficiente contenido para desplazarse.

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <!-- Your content goes here -->   

    </LinearLayout>
</ScrollView>

Si desea que siempre se muestre la barra de desplazamiento vertical, agregue android:scrollbarAlwaysDrawVerticalTrack="true" para usted ScrollView. Tenga en cuenta la altura de la LinearLayout se establece en wrap_content - esto significa la altura de la LinearLayout puede ser más grande que el de la ScrollView si hay suficiente contenido, en ese caso podrá desplazarse LinearLayout arriba y abajo.


47
2018-04-14 10:05



No puede agregar una barra de desplazamiento a un widget de esa manera. Puedes envolver tu widget dentro de un ScrollView. Aquí hay un ejemplo simple:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/txt"/>
    </LinearLayout>
</ScrollView>

Si quieres hacerlo en código:

ScrollView sv = new ScrollView(this);
//Add your widget as a child of the ScrollView.
sv.addView(wView);

11
2018-04-14 10:03