View inside ScrollView doesn't take all place

50,983

Solution 1

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/

Solution 2

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>
Share:
50,983

Related videos on Youtube

g123k
Author by

g123k

Updated on July 08, 2022

Comments

  • g123k
    g123k almost 2 years

    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>
    
  • CoolMind
    CoolMind almost 8 years
    The same is for HorizontalScrollView.
  • Qasim
    Qasim about 7 years
    Saved my day, scrollview sucks without this :p
  • Anas Azeem
    Anas Azeem almost 6 years
    Worked like a charm! Thanks. You saved my day.
  • Enselic
    Enselic over 4 years
    If it doesn't work for you, make sure you set the attribute on the ScrollView, not the child!
  • dudi
    dudi about 4 years
    Thanks for the great answer. Save my day also