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

问题描述

|| 在我最外面的布局管理器中,我得到了以下信息:
<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
。我只想让我在这里应付的每两个exactly恰好占父母的一半。我以为我可以将每个
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>
    

解决方法

由于外部的
LinearLayout
horizontal
,因此将其子元素的
android:layout_width
设置为
0dip
。然后,仅
android:layout_weight
将控制大小。     ,嗯,这对我有用:
    <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>
    ,您已将textview和button的宽度指定为0,以解释为什么它们不可见的原因