lpfx
lpfx

Reputation: 1516

Android LinearLayout as screen footer

I have a layout like this:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="@dimen/action_bar_default_height"
    android:layout_marginTop="25dp"
    android:background="@drawable/gradient"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <ImageButton ... />

    <TextView ... />

    <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1" />

    <ImageView ... />

    <ImageButton ... />

    <ImageButton ... />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        <!-- All extra views are inflated here, if needed -->

    </LinearLayout>

<!-- Main view -->

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" />

<!-- HERE I WANT TO PUT A FOOTER -->
<LinearLayout
    android:id="@+id/FOOTER"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        <!-- footer.xml WILL BE INFLATED HERE -->

    </LinearLayout>

</LinearLayout>

The footer is another .xml file (footer.xml) that will be inflated in the FOOTER LinearLayout. I tried to change FOOTER to RelativeLayout and add android:layout_alignParentBottom="true" to the footer.xml LinearLayout, but it did not work.

footer.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
...
</LinearLayout>

Any ideas?

Upvotes: 0

Views: 235

Answers (3)

Michael Krause
Michael Krause

Reputation: 4859

Try adding

android:layout_weight="1"

To the LinearLayout you want to take up all of the extra vertical space (I assume this would be the one under your Main view comment?)

That will force the footer linear layout to the bottom of its parent.

Also, you may want to consider just using an include tag for your footer.xml layout instead of placing it as a child of your LinearLayout with id FOOTER.

So you should be able to remove the LinearLayout with id FOOTER altogether and replace it with an include tag.

Something like:

<include android:id="@+id/FOOTER" layout="@layout/footer" android:layout_width="fill_parent" android:layout_height="wrap_content"/>

Upvotes: 1

Shawn
Shawn

Reputation: 1593

Since all of your LinearLayout in you XML are "wrap_content", you need to set the weight of one of them to be "1" so that guy will actually takes all the possible space. I would give it to the "Main View". basically you should add android:layout_weight="1" to it.

Changing footer to relativelayout won't work. those "relative parent bottom" stuff works if the PARENT is relative layout. not the child.

Upvotes: 1

Stephen
Stephen

Reputation: 762

I can't see any reason why changing the patent layout to relative wouldn't work. Try removing all of the XML except the footer and see if it works. Then add it back in bit by but

Upvotes: 0

Related Questions