Lihat di dalam ScrollView tidak terjadi semua


144

Saya memiliki RelativeLayout di dalam ScrollView. RelativeLayout saya memiliki android:layout_height="match_parent"tetapi tampilan tidak mengambil seluruh ukuran, itu seperti wrap_content.

Apakah ada cara untuk memiliki perilaku fill_parent / match_parent nyata?

Tata letak saya:

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

Jawaban:


461

Coba tambahkan android:fillViewport="true"ke ScrollView Anda

ingat itu android:layout_height=”fill_parent”berarti "mengatur ketinggian ke ketinggian orang tua." Ini jelas bukan yang Anda inginkan saat menggunakan a ScrollView. Bagaimanapun, itu ScrollViewakan menjadi sia-sia jika isinya selalu setinggi dirinya. Untuk mengatasinya, Anda perlu menggunakan atribut ScrollView yang disebut android:fillViewport. Jika disetel ke true, atribut ini menyebabkan anak tampilan gulir melebar ke ketinggian ScrollViewjika diperlukan. Ketika anak lebih tinggi daripada ScrollView, atribut tidak berpengaruh.

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


3
Hal yang sama adalah untuk HorizontalScrollView.
CoolMind

Menyelamatkan hari saya, scrollview menyebalkan tanpa ini: p
Qasim

Bekerja seperti pesona! Terima kasih. Kamu menyelamatkan hariku.
Anas Azeem

Jika itu tidak berhasil untuk Anda, pastikan Anda menetapkan atribut pada ScrollView, bukan anak!
Enselic

Terima kasih atas jawabannya. Simpan hari saya juga
dudi

8

Cukup tambahkan android: fillViewport = "true" di tata letak xml Anda di 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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.