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>
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 unScrollView
. Après tout, leScrollView
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 deScrollView
, si nécessaire. Lorsque l'enfant est plus grand que leScrollView
, l'attribut n'a aucun effet.
http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/
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>