AndroidDev
AndroidDev

Reputation: 21237

Android Scrollview Won't fill parent space

I have a relative layout fills the entire screen. I want to add a scrollview in the middle of it to wrap a bunch of content so that I can make it pan up when the soft keyboard gets displayed. However, as soon as I wrap it in a scrollview, the bottom most layout stops filling the remainder of the screen.

Here is the XML where I have the ScrollView commented out.

<include
    android:id="@+id/top_bar_with_save_button"
    layout="@layout/top_bar_with_save_button"/>

<FrameLayout
    android:id="@+id/log_entry_title_frame"
    android:layout_below="@id/top_bar_with_save_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/log_entry_title_frame"
    android:layout_alignParentBottom="true">

<!--
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
-->

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/log_entry_title_frame"
            android:orientation="vertical"
            android:background="#f00">

            <!-- Lots of stuff in here -->
            <EditText
                android:id="@+id/log_entry_notes"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="8dp"
                android:gravity="top|left"/>

        </RelativeLayout>

<!--
    </ScrollView>
 -->
</LinearLayout>

It looks like this:

enter image description here

But as soon as I remove the comment from the ScrollView it immediately compresses like this:

enter image description here

Why does this happen? I need it to fill the entire space on the screen, and I cannot figure out what is happening. Can anyone tell me how to fix this? Thanks!

Upvotes: 0

Views: 816

Answers (2)

Kevin Coppock
Kevin Coppock

Reputation: 134664

You need to add the fillViewport="true" attribute to your ScrollView tag. Or you can add it programmatically with scrollView.setFillViewPort(true);. Otherwise, the ScrollView will wrap to its child's content height.

Upvotes: 7

Toris
Toris

Reputation: 2376

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ... >

layout_height of scrolling container should be "wrap_content".

Upvotes: 0

Related Questions