web-dev-qa-db-fra.com

La vue à l'intérieur de ScrollView ne prend pas toute la place

J'ai un RelativeLayout à l'intérieur d'un ScrollView. Mon RelativeLayout a Android:layout_height="match_parent" mais la vue ne prend pas toute la taille, c'est comme un wrap_content.

Existe-t-il un moyen d'avoir le comportement réel fill_parent/match_parent?

Ma mise en page:

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

Essayez d'ajouter Android:fillViewport="true"à votre ScrollView

rappelez-vous que Android:layout_height=”fill_parent” signifie "régler la hauteur sur la hauteur du parent". Ce n’est évidemment pas ce que vous voulez lorsque vous utilisez un ScrollView. Après tout, le ScrollView deviendrait inutile si son contenu était toujours aussi haut que lui-même. Pour contourner ce problème, vous devez utiliser l'attribut ScrollView appelé Android:fillViewport. Lorsqu'il est défini sur true, cet attribut entraîne le développement de l’enfant de la vue de défilement à la hauteur de ScrollView, si nécessaire. Lorsque l'enfant est plus grand que le ScrollView, l'attribut n'a aucun effet.

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

411
Sam Dozor

Ajoutez simplement Android: fillViewport = "true" dans votre mise en page XML dans 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>
6