Bagaimana Anda membuat scroll LinearLayout?

241

Saya memiliki banyak item di layar dan saya perlu menggunakan scrollbar sehingga pengguna dapat menggulir ke bawah. Namun, gulungannya tidak terlihat atau tidak berfungsi. Bagaimana mungkin menambahkan bilah gulir ke LinearLayout?

Troj
sumber
4
duplikat yang mungkin dari Cara membuat
scroll

Jawaban:

459

Bungkus tata letak linier dengan a <ScrollView>

Lihat di sini untuk contoh:

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

Catatan: fill_parent sudah tidak digunakan lagi dan diganti namanya menjadi match_parent di API Level 8 dan lebih tinggi.

Bryan Denny
sumber
1
@DanielMagnusson Link masih berfungsi di sini ... berikut ini adalah panduan video: youtube.com/watch?v=kNX996ZZ2CI
Bryan Denny
33
Saya tidak berpikir Anda perlu LinearLayout luar.
Lawrence Kesteloot
1
@Lawrence Tidak, itu tidak perlu, tetapi bisa bergantung pada seperti apa sisa tampilan Anda.
Bryan Denny
1
Jika Anda hanya memiliki Scrollview di linearlayout atas, Anda mendapat peringatan "Layout ScrollView ini atau induk LinearLayout tidak berguna; mentransfer atribut latar belakang ke tampilan lain" yang berarti mengatakan tidak ada gunanya memiliki linearlayout dengan hanya satu item.
Niels
2
dan beberapa pemberitahuan penting: ScrollView hanya boleh memiliki 1 anak
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
sumber
4

Ini bisa dilakukan menggunakan tag <ScrollView>. Untuk ScrollView , satu hal yang harus Anda ingatkan, ScrollView harus memiliki satu anak .

Jika Anda ingin tata letak lengkap Anda dapat digulir lalu tambahkan <ScrollView>di bagian atas. Lihat contoh yang diberikan di bawah ini.

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

Tetapi jika Anda ingin beberapa bagian dari tata letak Anda dapat digulir lalu tambahkan di <ScrollView>dalam bagian itu. Lihat contoh yang diberikan di bawah ini.

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

Inilah cara saya melakukannya dengan coba-coba.

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

Karena ScrollView hanya dapat memiliki satu anak, anak itu adalah tata letak linier. Kemudian semua tipe tata letak lainnya terjadi pada tata letak linier pertama. Saya belum mencoba untuk memasukkan tata letak relatif, tetapi mereka membuat saya gila jadi saya akan menunggu sampai kewarasan saya kembali.

Patrick Murphy
sumber
Bisakah Anda memperbaiki formatnya. Baris pertama Anda telah terjawab dari bagian kode dan situs tidak akan membiarkan saya memperbaikinya karena terlalu sepele untuk diedit.
Caltor
1

Anda perlu menggunakan atribut berikut dan melampirkannya di dalam tata letak linier

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

</scrollView>
</LinearLayout>
Pikiran Rekayasa
sumber
0

Anda perlu menempatkan ScrollView sebagai anak pertama dari file Layout dan sekarang masukkan linearlayout Anda di dalamnya. Sekarang, android akan memutuskan berdasarkan konten dan ukuran perangkat yang tersedia apakah akan menampilkan yang dapat digulir atau tidak.

Pastikan linearlayout tidak memiliki saudara kandung karena ScrollView tidak boleh memiliki lebih dari satu anak.

Tulsi
sumber
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
sumber
-27

Anda dapat menambahkan atrribute di linearLayout: android:scrollbars="vertical"

alishan
sumber
4
Ini mengontrol visibilitas bilah gulir saja. Tapi itu tidak menciptakan scrollview untuk Anda.
Botond Kopacz