168

I have a RelativeLayout inside a ScrollView. My RelativeLayout has android:layout_height="match_parent" but the view doesn't take the entire size, it's like a wrap_content.

Is there a way to have the real fill_parent/match_parent behavior ?

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

2 Answers 2

512

Try adding android:fillViewport="true"to your ScrollView

remember that android:layout_height=”fill_parent” means “set the height to the height of the parent.” This is obviously not what you want when using a ScrollView. After all, the ScrollView would become useless if its content was always as tall as itself. To work around this, you need to use the ScrollView attribute called android:fillViewport. When set to true, this attribute causes the scroll view’s child to expand to the height of the ScrollView if needed. When the child is taller than the ScrollView, the attribute has no effect.

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

Sign up to request clarification or add additional context in comments.

2 Comments

The same is for HorizontalScrollView.
If it doesn't work for you, make sure you set the attribute on the ScrollView, not the child!
18

Just add android:fillViewport="true" in yout xml layout in 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> 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.