如何使嵌套的线性布局占据父级的一半

时间:2011-05-25 14:12:11

标签: android

在我最外面的布局经理里面,我有这个:

<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>

请记住,这两个linearlayouts嵌套在最外层布局管理器中,它恰好也是linearlayout。我想简单地让我在这里应对的每个linearlayout占据父母的一半。我想我可以将每个linearlayout经理的权重设置为1,但没有骰子。例如,现在,图像占据了父母的70%......

我做错了什么?

编辑:

好的,我将其更改为此图像占据了布局的一半。太好了!但是textview和按钮消失了。

<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>

3 个答案:

答案 0 :(得分:4)

由于外LinearLayouthorizontal,因此请将其子android:layout_width设为0dip。然后,仅android:layout_weight将控制尺寸。

答案 1 :(得分:0)

嗯,这对我有用:

    <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>

答案 2 :(得分:0)

您已将textview和button的宽度指定为0,以便说明它们不可见的原因