Pergunta

I want the footer to be anchored at the bottom of the screen if and only if it can be anchored there without overlapping any other views.

The problem is that I don't know how many views are going to be added to the header or the footer.

If putting the footer at the bottom of the window would make it overlap, I want to put the footer at the bottom of the scrollview. (Maybe by adding it to the RelativeLayout with the rule that it needs to be below the top component?)

Here is a pic of what I'm trying to get:

desired result

Where:

1)The RelativeLayout contains both the TableLayout at the top, and the LinearLayout at the bottom.

2)The TableLayout expands downwards as TableRows get added to it.

3)The LinearLayout expands up from the bottom as views get added to it.

~~~

I'd like for the scrollview to grow in size only enough to fit the components without overlapping.

Thanks in advance for such awesome community support

Foi útil?

Solução

I think you can solve it in linear layout. You set three blocks in linear layout: header, body, footer. Set body to fill_parent and layout_weight=1, this way body will expand to fill what left after header and footer taken its part from parent. Whole structure place into ScrollView.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TableRow><TextView android:text="Text1"/></TableRow>
            <TableRow><TextView android:text="Text2"/></TableRow>
        </TableLayout>
        <RelativeLayout 
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView 
                android:text="@string/lorem_ipsum"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </RelativeLayout>
        <LinearLayout 
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:text="Text3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text="Text4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

I tested this in Emulator of Android 2.1 and it looks it works.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top