b85411
b85411

Reputation: 10030

Linearlayout spacing in Android

This is my layout:

TEXTVIEW

IMAGEVIEW (optional)

LINEARLAYOUT - to which I add Buttons dynamically

LINEARLAYOUT - with two buttons side by side (left button and right button)

What do I need to do to ensure that the bottom two linear layouts are fixed to the bottom of the screen, regardless of how much space they may take up? ie. The first linear layout might have 3 buttons and take up over half the screen, which is okay. It just needs to be above the left/right buttons in the last linear layout, which is fixed to the bottom.

Then I want my TextView and my ImageView vertically centred in the remaining space. The ImageView will be set to invisible if there is no image, so it could only be the text view which needs to be centred.

I've been playing around with android:gravity="bottom", android:layout_height="0dip"/android:layout_weight="1" (I later realised this would only give 50% to the text/imageview and 50% to the 2 linear layouts), but I can't get my desired result.

Any advice appreciated.

Upvotes: 0

Views: 289

Answers (1)

owe
owe

Reputation: 4930

You have to take RelativeLayout. There you have a better control of the relative position of the views, something like this:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
>
    <TextView 
        android:id="@+id/textView"
        android:layout_above="@+id/imageView"
        android:layout_centerVertical="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />

    <ImageView 
        android:id="@+id/imageView"
        android:layout_above="@+id/ll_1"
        android:layout_centerVertical="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />

    <LinearLyout 
        android:id="@+id/ll_1"
        android:layout_above="@+id/ll_2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />

    <LinearLyout 
        android:id="@+id/ll_2"
        android:layout_alignParentBottom="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />


</RelativeLayout>

Upvotes: 1

Related Questions