มุมมองภายใน ScrollView ไม่เกิดขึ้น


144

ฉันมี RelativeLayout ภายใน ScrollView My RelativeLayout มีandroid:layout_height="match_parent"แต่มุมมองไม่ได้ใช้ขนาดทั้งหมดมันเหมือนกับ wrap_content

มีวิธีที่จะมีพฤติกรรม fill_parent / match_parent จริงหรือไม่?

เลย์เอาต์ของฉัน:

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

คำตอบ:


461

ลองเพิ่มandroid:fillViewport="true"ใน ScrollView ของคุณ

จำไว้ว่าandroid:layout_height=”fill_parent”หมายถึง“ กำหนดความสูงเป็นความสูงของผู้ปกครอง” ScrollViewนี้จะเห็นได้ชัดไม่ได้สิ่งที่คุณต้องการเมื่อใช้ ท้ายที่สุดสิ่งเหล่าScrollViewนี้ก็จะไร้ประโยชน์หากเนื้อหานั้นสูงเท่าตัวมันเอง การทำงานรอบนี้คุณจะต้องใช้แอตทริบิวต์ ScrollView android:fillViewportเรียกว่า เมื่อตั้งค่าเป็นจริงคุณลักษณะนี้จะทำให้ลูกของมุมมองเลื่อนเพื่อขยายความสูงของScrollViewถ้าจำเป็น เมื่อเด็กสูงกว่าScrollViewแอตทริบิวต์นั้นจะไม่มีผลใด ๆ

http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/


3
เช่นเดียวกับ HorizontalScrollView
CoolMind

บันทึกวันของฉันแล้ว scrollview sucks โดยไม่มีสิ่งนี้: p
Qasim

ทำงานเหมือนจับใจ! ขอบคุณ คุณบันทึกวันของฉัน
Anas Azeem

หากมันไม่ได้ผลสำหรับคุณตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าแอตทริบิวต์บน ScrollView ไม่ใช่เด็ก!
Enselic

ขอบคุณสำหรับคำตอบที่ดี บันทึกวันของฉันด้วย
dudi

8

เพียงเพิ่ม android: fillViewport = "true" ในรูปแบบ yout xml ใน 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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.