¿Cómo se hace un LinearLayout desplazable?

Respuestas:

459

Envuelva el diseño lineal con un <ScrollView>

Vea aquí para un ejemplo:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       xmlns:android="http://schemas.android.com/apk/res/android">
       <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <LinearLayout 
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">
                  <!-- Content here -->
            </LinearLayout>
      </ScrollView>
 </LinearLayout>

Nota: fill_parent está en desuso y se renombró a match_parent en API Nivel 8 y superior.

Bryan Denny
fuente
1
@DanielMagnusson Link todavía funciona aquí ... aquí hay una guía de video: youtube.com/watch?v=kNX996ZZ2CI
Bryan Denny
33
No creo que necesites el LinearLayout externo.
Lawrence Kesteloot
1
@Lawrence No, no es necesario, pero puede depender de cómo se ve el resto de su vista.
Bryan Denny
1
Si solo tiene la Vista de desplazamiento en la distribución lineal superior, aparece la advertencia "Este diseño de Vista de desplazamiento o su padre LinearLayout es inútil; transfiera el atributo de fondo a la otra vista", lo que significa que no tiene sentido tener una distribución lineal con solo un elemento.
Niels
2
y algún aviso importante: ScrollView debe tener solo 1 hijo
O-9
145
<ScrollView 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/scroll" 
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

      <LinearLayout 
            android:id="@+id/container"
            android:orientation="vertical" 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
      </LinearLayout>

 </ScrollView>
krunal shah
fuente
4

Esto se puede hacer usando la etiqueta <ScrollView>. Para ScrollView , una cosa que debes recordar es que ScrollView debe tener un solo hijo .

Si desea que su diseño completo sea desplazable, agregue <ScrollView>en la parte superior. Verifique el ejemplo que figura a continuación.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout 
        android:id="@+id/container" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <!-- Content here -->
    </LinearLayout>

</ScrollView>

Pero si desea que una parte de su diseño sea desplazable, agregue <ScrollView>dentro de esa parte. Verifique el ejemplo que figura a continuación.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="400dp">

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

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
                <!-- Content here -->
        </LinearLayout>

    </ScrollView>

</LinearLayout>
Avijit Karmakar
fuente
4

Así es como lo hice por prueba y error.

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

Dado que ScrollView solo puede tener un hijo, ese hijo es un diseño lineal. Luego, todos los demás tipos de diseño se producen en el primer diseño lineal. Todavía no he intentado incluir un diseño relativo, pero me vuelven loco, así que esperaré hasta que recupere la cordura.

Patrick Murphy
fuente
¿Podría arreglar el formato por favor? Su primera línea se ha perdido de la sección de código y el sitio no me deja arreglarla, ya que es una edición demasiado trivial.
Caltor
1

necesita usar el siguiente atributo y encerrarlo dentro del diseño lineal

<LinearLayout ...>
<scrollView ...> 

</scrollView>
</LinearLayout>
Mente de ingeniería
fuente
0

Debe colocar ScrollView como el primer elemento secundario del archivo Diseño y ahora colocar su distribución lineal dentro de él. Ahora, Android decidirá sobre la base del contenido y el tamaño del dispositivo disponible si mostrar un desplazamiento o no.

Asegúrese de que linearlayout no tenga hermanos porque ScrollView no puede tener más de un hijo.

Tulsi
fuente
0
 <LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">

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

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <---------Content Here --------------->
            </LinearLayout>
       </ScrollView>
    </LinearLayout>
anksanu
fuente
-27

Puede agregar un atributo en linearLayout: android:scrollbars="vertical"

alishan
fuente
44
Esto controla la visibilidad de las barras de desplazamiento solamente. Pero no crea una vista de desplazamiento para usted.
Botond Kopacz