Làm thế nào để bạn thực hiện một cuộn tuyến tínhLayout?


Câu trả lời:


459

Bao bọc bố cục tuyến tính với một <ScrollView>

Xem ở đây để biết ví dụ:

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

Lưu ý: fill_parent không được dùng nữa và được đổi tên thành match_parent trong API cấp 8 trở lên.


1
@DanielMagnusson Liên kết vẫn hoạt động ở đây ... đây là hướng dẫn bằng video: youtube.com/watch?v=kNX996ZZ2CI
Bryan Denny

33
Tôi không nghĩ rằng bạn cần tuyến tính bên ngoài.
Lawrence Kesteloot

1
@Lawrence Không, điều đó không cần thiết, nhưng có thể phụ thuộc vào phần còn lại của chế độ xem của bạn.
Bryan Denny

1
Nếu bạn chỉ có Scrollview trong linearlayout hàng đầu, bạn sẽ nhận được cảnh báo "Bố cục ScrollView này hoặc cha mẹ tuyến tính của nó là vô dụng; chuyển thuộc tính nền sang chế độ xem khác" có nghĩa là vô nghĩa khi chỉ có một linearlayout chỉ với một mục.
Niels

2
và một số thông báo nhập khẩu: ScrollView chỉ có 1 con
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

Điều này có thể được thực hiện bằng cách sử dụng thẻ <ScrollView>. Đối với ScrollView , một điều bạn phải nhắc rằng, ScrollView phải có một con .

Nếu bạn muốn bố trí đầy đủ của bạn có thể cuộn được thì hãy thêm <ScrollView>ở trên cùng. Kiểm tra ví dụ được đưa ra dưới đây.

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

Nhưng nếu bạn muốn một phần bố cục của bạn có thể cuộn được thì hãy thêm vào <ScrollView>trong phần đó. Kiểm tra ví dụ được đưa ra dưới đây.

<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

Đây là cách tôi đã làm nó bằng cách dùng thử và lỗi.

ScrollView - (the outer wrapper).

    LinearLayout (child-1).

        LinearLayout (child-1a).

        LinearLayout (child-1b).

Vì ScrollView có thể chỉ có một con, nên đứa trẻ đó là một bố cục tuyến tính. Sau đó, tất cả các kiểu bố trí khác xảy ra trong bố trí tuyến tính đầu tiên. Tôi đã không cố gắng bao gồm một bố cục tương đối, nhưng họ lái xe cho tôi hạt dẻ vì vậy tôi sẽ đợi cho đến khi sự tỉnh táo của tôi trở lại.


Bạn có thể sửa định dạng xin vui lòng. Dòng đầu tiên của bạn đã bị bỏ lỡ từ phần mã và trang web sẽ không cho phép tôi sửa nó vì nó là một chỉnh sửa quá nhỏ.
Caltor

1

bạn cần sử dụng thuộc tính sau và đặt nó trong bố cục tuyến tính

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

</scrollView>
</LinearLayout>

0

Bạn cần đặt ScrollView làm con đầu tiên của tệp Bố cục và bây giờ đặt linearlayout của bạn vào trong đó. Bây giờ, android sẽ quyết định dựa trên nội dung và kích thước thiết bị có sẵn để hiển thị có thể cuộn hay không.

Đảm bảo linearlayout không có anh chị em vì ScrollView không thể có nhiều hơn một con.


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

Bạn có thể thêm một thuộc tính trong linearLayout: android:scrollbars="vertical"


4
Điều này chỉ kiểm soát khả năng hiển thị của thanh cuộn. Nhưng nó không tạo ra một scrollview cho bạn.
Botond Kopacz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.