Xem bên trong ScrollView không mất hết chỗ


144

Tôi có RelativeLayout bên trong ScrollView. RelativeLayout của tôi có android:layout_height="match_parent"nhưng chế độ xem không chiếm toàn bộ kích thước, nó giống như một bọc_content.

Có cách nào để có hành vi fill_parent / match_parent thực sự không?

Bố cục của tôi:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

    <ImageView
    android:id="@+id/top"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:scaleType="fitXY"
    android:src="@drawable/top" />

    <ImageView
    android:id="@+id/header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/top"
    android:scaleType="fitXY"
    android:src="@drawable/headerbig" />

    <ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/header"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="3dp"
    android:src="@drawable/logo" />

    <ScrollView
    android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom"
    android:layout_below="@+id/logo"
    android:background="@drawable/background" >

        <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

             <ImageView
            android:id="@+id/dashboard01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/dashboard02"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="30dp"
            android:src="@drawable/dashboard01"
            android:visibility="visible" />

            <ImageView
            android:id="@+id/dashboard02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:src="@drawable/dashboard02" />

             <ImageView
            android:id="@+id/dashboard03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/dashboard02"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="40dp"
            android:src="@drawable/dashboard03"
            android:visibility="visible" />
         </RelativeLayout>
    </ScrollView>

    <ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/logo"
    android:layout_centerHorizontal="true"
    android:scaleType="fitXY"
    android:src="@drawable/bar" />

    <ImageView
    android:id="@+id/bottom"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:scaleType="fitXY"
    android:src="@drawable/bottom" />

</RelativeLayout>

Câu trả lời:


461

Hãy thử thêm android:fillViewport="true"vào ScrollView của bạn

hãy nhớ điều đó android:layout_height=”fill_parent”có nghĩa là thành lập chiều cao của cha mẹ. Đây rõ ràng không phải là những gì bạn muốn khi sử dụng a ScrollView. Rốt cuộc, điều ScrollViewđó sẽ trở nên vô dụng nếu nội dung của nó luôn cao như chính nó. Để khắc phục điều này, bạn cần sử dụng thuộc tính ScrollView được gọi android:fillViewport. Khi được đặt thành true, thuộc tính này làm cho con của chế độ xem cuộn mở rộng theo chiều cao ScrollViewnếu cần. Khi đứa trẻ cao hơn ScrollView, thuộc tính không có tác dụng.

http://www.cpered-creature.org/2010/08/15/scrollview-handy-trick/


3
Điều tương tự là đối với verticalScrollView.
CoolMind

Lưu lại ngày của tôi, scrollview hút mà không có điều này: p
Qasim

Làm việc như người ở! Cảm ơn. Bạn đã cứu ngày của tôi.
Anas Azeem

Nếu nó không phù hợp với bạn, hãy đảm bảo bạn đặt thuộc tính trên ScrollView chứ không phải con!
Enselic

Cảm ơn câu trả lời tuyệt vời. Cũng tiết kiệm trong ngày của tôi
dudi

8

Chỉ cần thêm android: fillViewport = "true" trong bố cục yout xml trong Scrollview

<ScrollView android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:background="@color/green"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fitsSystemWindows="true"
    android:fillViewport="true"
    >

<!--define views here-->


</ScrollView>
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.