Die Ansicht in ScrollView findet nicht alle statt

144

Ich habe ein RelativeLayout in einer ScrollView. Mein RelativeLayout hat, android:layout_height="match_parent"aber die Ansicht nimmt nicht die gesamte Größe an, es ist wie ein wrap_content.

Gibt es eine Möglichkeit, das echte Verhalten von fill_parent / match_parent zu erreichen?

Mein Layout:

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

Antworten:

461

Versuchen Sie, android:fillViewport="true"zu Ihrer ScrollView hinzuzufügen

Denken Sie daran, dass dies android:layout_height=”fill_parent”bedeutet, dass Sie die Höhe auf die Höhe des Elternteils einstellen. Dies ist offensichtlich nicht das, was Sie wollen, wenn Sie a verwenden ScrollView. Immerhin ScrollViewwürde das nutzlos werden, wenn sein Inhalt immer so groß wäre wie er selbst. Um dies zu umgehen, müssen Sie das aufgerufene ScrollView-Attribut verwenden android:fillViewport. Wenn dieses Attribut auf true gesetzt ist, wird das untergeordnete Element der Bildlaufansicht ScrollViewbei Bedarf auf die Höhe der erweitert . Wenn das Kind größer als das ist ScrollView, hat das Attribut keine Auswirkung.

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

Sam Dozor
quelle
3
Gleiches gilt für HorizontalScrollView.
CoolMind
Rettete meinen Tag, Scrollview saugt ohne dies: p
Qasim
Lief wie am Schnürchen! Vielen Dank. Du hast meinen Tag gerettet.
Anas Azeem
Wenn es bei Ihnen nicht funktioniert, stellen Sie sicher, dass Sie das Attribut in der ScrollView festlegen, nicht das untergeordnete Element!
Enselic
Danke für die tolle Antwort. Rette auch meinen Tag
dudi
8

Fügen Sie einfach android: fillViewport = "true" in Ihrem XML-Layout in Scrollview hinzu

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