Come si fa a scorrere un LinearLayout?


Risposte:


459

Avvolgere il layout lineare con a <ScrollView>

Vedi qui per un esempio:

 <?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 è obsoleto e rinominato match_parent in API Level 8 e versioni successive.


1
@DanielMagnusson Il link funziona ancora qui ... ecco una guida video: youtube.com/watch?v=kNX996ZZ2CI
Bryan Denny

33
Non penso che tu abbia bisogno del LinearLayout esterno.
Lawrence Kesteloot,

1
@Lawrence No, non è necessario, ma può dipendere dall'aspetto del resto della vista.
Bryan Denny,

1
Se hai solo la vista di scorrimento nel linearlayout in alto, ricevi l'avvertenza "Questo layout ScrollView o il suo genitore LinearLayout è inutile; trasferisci l'attributo di sfondo nell'altra vista", il che significa che è inutile avere un linearlayout con un solo elemento.
Niels,

2
e qualche avviso importante: ScrollView deve avere solo 1 figlio
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>

4

Questo può essere fatto usando il tag <ScrollView>. Per ScrollView , una cosa che devi ricordare è che ScrollView deve avere un unico figlio .

Se desideri che il layout completo sia scorrevole, aggiungi <ScrollView>in alto. Controlla l'esempio riportato di seguito.

<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>

Ma se vuoi che una parte del layout sia scorrevole, aggiungi <ScrollView>all'interno di quella parte. Controlla l'esempio riportato di seguito.

<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>

4

Ecco come l'ho fatto per tentativi ed errori.

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

Poiché ScrollView può avere un solo figlio, quel figlio è un layout lineare. Quindi tutti gli altri tipi di layout si verificano nel primo layout lineare. Non ho ancora provato a includere un layout relativo, ma mi fanno impazzire, quindi aspetterò fino a quando la mia sanità mentale tornerà.


Potresti correggere la formattazione per favore. La tua prima riga è stata persa dalla sezione del codice e il sito non mi consente di risolverlo in quanto è una modifica troppo banale.
Caltor,

1

è necessario utilizzare il seguente attributo e racchiuderlo nel layout lineare

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

</scrollView>
</LinearLayout>

0

Devi posizionare ScrollView come il primo figlio del file Layout e ora inserire il tuo linearlayout al suo interno. Ora, Android deciderà in base al contenuto e alle dimensioni del dispositivo disponibili se mostrare un dispositivo di scorrimento o meno.

Assicurarsi che linearlayout non abbia fratelli poiché ScrollView non può avere più di un figlio.


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>

-27

È possibile aggiungere un attributo in linearLayout: android:scrollbars="vertical"


4
Questo controlla solo la visibilità delle barre di scorrimento. Ma non crea una vista di scorrimento per te.
Botond Kopacz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.