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

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/

Sam Dozor
sumber
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>
virendra singh deora
sumber