LinearLayout中具有相同权重的两个视图

时间:2013-06-30 09:45:50

标签: android android-linearlayout

在下面的代码中,我使用了LinearLayout中layout_weight = 1和layout_width(或layout_height)等于0的组合。 一个问题是为什么在第二个LinearLayout中,第二个按钮和第一个按钮不占用相等的空间?它们具有相同的权重(layout_weight = 1),因此它们应具有相同的空间。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout01"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:text="wreoiwe roiwej roiwejr weoirjweoirjwoeirjoweijrowerjowejorjweoirjwoeiwoi" >
    </TextView>

    <LinearLayout
        android:id="@+id/LinearLayout02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/Button01"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:text="Submit" >
        </Button>

        <Button
            android:id="@+id/Button02"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:text="Cancelrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" >
        </Button>
    </LinearLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:3)

这是因为第二个LinearLayoutwrap_content而不是layout_weight的工作方式。

来自文档:

  

较大的权重值允许它展开以填充父视图中的任何剩余空间。

如果LinearLayout位于wrap_content且未填满整个屏幕,则父视图中不再有“剩余空间”。一切都应该是应有的大。它不会扩展较小的按钮,因为wrap_content处的父级没有更多空间可以扩展。

您可以通过将第二个LinearLayout更改为match_parent进行测试,您会看到每个按钮占据屏幕的一半。

答案 1 :(得分:1)

如果你想在textview和下一行中有一行,那么你需要在第二个linearlayout上放置占据总宽度50%的两个底部

android:layout_width="fill_parent"