Wie macht man ein LinearLayout scrollbar?


241

Ich habe viele Elemente auf dem Bildschirm und muss die Bildlaufleiste verwenden, damit der Benutzer nach unten scrollen kann. Die Schriftrolle ist jedoch entweder nicht sichtbar oder funktioniert nicht. Wie ist es möglich, eine Bildlaufleiste zu einem hinzuzufügen LinearLayout?


Antworten:


459

Wickeln Sie das lineare Layout mit a <ScrollView>

Ein Beispiel finden Sie hier:

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

Hinweis: fill_parent ist veraltet und wird in API Level 8 und höher in match_parent umbenannt .


1
@ DanielMagnusson Link funktioniert immer noch hier ... hier ist eine Videoanleitung: youtube.com/watch?v=kNX996ZZ2CI
Bryan Denny

33
Ich glaube nicht, dass Sie das äußere LinearLayout brauchen.
Lawrence Kesteloot

1
@ Lawrence Nein, es ist nicht notwendig, kann aber davon abhängen, wie der Rest Ihrer Ansicht aussieht.
Bryan Denny

1
Wenn Sie nur die Bildlaufansicht im oberen linearen Layout haben, wird die Warnung "Dieses ScrollView-Layout oder sein übergeordnetes LinearLayout-Layout ist nutzlos; übertragen Sie das Hintergrundattribut in die andere Ansicht" angezeigt. Dies bedeutet, dass es sinnlos ist, ein lineares Layout mit nur einem Element zu haben.
Niels

2
und einige wichtige Hinweise: ScrollView darf nur 1 Kind haben
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

Dies kann mit dem Tag erfolgen <ScrollView>. Für ScrollView müssen Sie daran erinnern, dass ScrollView ein einziges Kind haben muss .

Wenn Sie möchten, dass Ihr vollständiges Layout scrollbar ist, fügen Sie es <ScrollView>oben hinzu. Überprüfen Sie das unten angegebene Beispiel.

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

Wenn Sie jedoch möchten, dass ein Teil Ihres Layouts scrollbar ist, fügen Sie ihn <ScrollView>innerhalb dieses Teils hinzu. Überprüfen Sie das unten angegebene Beispiel.

<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

Hier ist, wie ich es durch Versuch und Irrtum gemacht habe.

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

Da ScrollView nur ein Kind haben kann, ist dieses Kind ein lineares Layout. Dann treten alle anderen Layouttypen im ersten linearen Layout auf. Ich habe noch nicht versucht, ein relatives Layout aufzunehmen, aber sie machen mich verrückt, also werde ich warten, bis meine geistige Gesundheit zurückkehrt.


Könnten Sie bitte die Formatierung korrigieren. Ihre erste Zeile wurde im Codeabschnitt übersehen, und auf der Website kann ich sie nicht korrigieren, da sie zu trivial ist.
Caltor

1

Sie müssen das folgende Attribut verwenden und es in das lineare Layout einschließen

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

</scrollView>
</LinearLayout>

0

Sie müssen ScrollView als erstes untergeordnetes Element der Layoutdatei platzieren und nun Ihr lineares Layout darin ablegen. Jetzt entscheidet Android anhand des verfügbaren Inhalts und der verfügbaren Gerätegröße, ob ein Bildlauf angezeigt werden soll oder nicht.

Stellen Sie sicher, dass linearlayout keine Geschwister hat, da ScrollView nicht mehr als ein Kind haben kann.


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

Sie können ein Attribut in linearLayout hinzufügen: android:scrollbars="vertical"


4
Dies steuert nur die Sichtbarkeit der Bildlaufleisten. Es wird jedoch keine Bildlaufansicht für Sie erstellt.
Botond Kopacz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.