LuxuryMode
LuxuryMode

Reputation: 33751

How to make nested linear layouts each take up half of parent

Inside of my outer-most layout manager, I've got this:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:orientation="horizontal" android:layout_margin="2dp"
    android:id="@+id/linearlayout1" android:layout_weight="1">


    <com.me.android.ui.ImageView
        android:id="@+id/artistimage" android:layout_height="177dp"
        android:layout_width="wrap_content" android:scaleType="centerCrop"
        android:layout_margin="5dp" />

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

        <TextView android:layout_height="wrap_content"
            android:textSize="24dp" android:paddingBottom="5dp"
            android:textStyle="bold" android:paddingLeft="5dp"
            android:paddingTop="5dp" android:layout_width="fill_parent"
            android:textColor="@color/redtext" android:id="@+id/artistname" />

        <ToggleButton android:id="@+id/artistfav"
            android:layout_alignParentRight="true" android:background="@drawable/favbutton"
            android:textOff=" " android:textOn=" " android:layout_marginTop="5dp"
            android:layout_width="fill_parent" android:layout_height="30dp"
            android:layout_marginRight="10dp" android:text="Add to Favorites"
            android:scaleType="fitXY" />

    </LinearLayout>

</LinearLayout>

Keep in mind that these two linearlayouts are nested inside of the outermost layoutmanager, which happens to also be a linearlayout. I want to simply have each of the linearlayouts that I coped here to take up exactly half of the parent. I thought I could just set the weight of each linearlayout manager to 1, but no dice. Right now the image, for example, is taking like 70% of the parent...

What am I doing wrong?

EDIT:

OK, I changed it to this and the image is taking up half the layout. Nice! But the textview and button disappeared.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:orientation="horizontal" android:layout_margin="2dp"
    android:id="@+id/linearlayout1">


    <com.me.android.ui.ImageView
        android:id="@+id/artistimage" android:layout_height="177dp"
        android:layout_width="fill_parent" android:scaleType="centerCrop"
        android:layout_margin="5dp" android:layout_weight="1" />

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

        <TextView android:layout_height="wrap_content"
            android:textSize="24dp" android:paddingBottom="5dp"
            android:textStyle="bold" android:paddingLeft="5dp"
            android:paddingTop="5dp" android:layout_width="0dip"
            android:textColor="@color/redtext" android:id="@+id/artistname" />

        <ToggleButton android:id="@+id/artistfav"
            android:layout_alignParentRight="true" android:background="@drawable/favbutton"
            android:textOff=" " android:textOn=" " android:layout_marginTop="5dp"
            android:layout_width="0dip" android:layout_height="30dp"
            android:layout_marginRight="10dp" android:text="Add to Favorites"
            android:scaleType="fitXY" />

    </LinearLayout>
</LinearLayout>

Upvotes: 1

Views: 7189

Answers (3)

pankajagarwal
pankajagarwal

Reputation: 13582

you have specified the width of textview and button to 0 so that explains why they aren't visible

Upvotes: 0

LuxuryMode
LuxuryMode

Reputation: 33751

Well, this is what worked for me:

    <com.me.android.ui.ImageView
        android:id="@+id/artistimage" android:layout_height="150dp"
        android:layout_width="fill_parent" android:scaleType="centerCrop"
        android:layout_margin="5dp" android:layout_weight="1" />

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

        <TextView android:layout_height="wrap_content"
            android:textSize="22dp" android:paddingBottom="5dp"
            android:textStyle="bold" android:paddingLeft="5dp"
            android:paddingTop="5dp" android:layout_width="fill_parent"
            android:textColor="@color/redtext" android:id="@+id/artistname"/>

        <ToggleButton android:id="@+id/artistfav"
            android:layout_alignParentRight="true" android:background="@drawable/favbutton"
            android:textOff=" " android:textOn=" " android:layout_marginTop="5dp"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_marginRight="10dp" 
             />

    </LinearLayout>
</LinearLayout>

Upvotes: 0

CommonsWare
CommonsWare

Reputation: 1007399

Since the outer LinearLayout is horizontal, set the android:layout_width of its children to 0dip. Then, android:layout_weight alone will control the sizing.

Upvotes: 4

Related Questions