使用layout_weight以完美的比例安排LinearLayout中的Android Arrange小部件

时间:2012-12-27 04:21:04

标签: android android-layout android-widget

在我的应用程序中,我必须以适当的比例(宽度)排列我的小部件。我有6个小部件,我想仅考虑宽度2:2:4:4:1:1的比例。我试过这个,但我没有得到正确的解决方案。

<LinearLayout
            android:id="@+id/register_header12"
            android:layout_width="fill_parent"
            android:layout_height="55dp"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="5dp"
            android:weightSum="14"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/register_title_image"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="2"
                android:contentDescription="@string/app_icon_desc"
                android:src="@drawable/logo_blue" />

            <TextView
                android:id="@+id/register_title_name"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="2"
                android:text="Name"
                android:textStyle="bold" />

            <Button
                android:id="@+id/bbb"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="@drawable/bar_button"
                android:text="BBB"
                android:textStyle="bold" />

            <Button
                android:id="@+id/aaa"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="@drawable/bar_button"
                android:text="AAA"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/setting"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="4"
                android:src="@drawable/ic_menu_manage"
                android:onClick="showSettings"

              />

            <ImageView
                android:id="@+id/signout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="4"
                android:src="@drawable/ic_menu_blocked_user"
                android:onClick="doSignOut"
                />
        </LinearLayout>

请给我最好的方式..

4 个答案:

答案 0 :(得分:4)

将所有android:layout_width更改为0.这将允许权重属性确定宽度,并应解决您的问题。

答案 1 :(得分:1)

首先在您的线性布局中放置weightSum =(在您的情况下所有布局权重的总和为14),

然后根据您的比例制作子视图宽度wrap_content和权重属性。

希望这会奏效。

答案 2 :(得分:0)

layout_weight不决定小部件大小。在布局中,每个小部件都会测量其大小并需要父布局中的空间。然后父母根据layout_weight的比例为所有孩子分配剩余的空间。因此,在您的情况下,您可以指定layout_width = 0。这样,小部件不需要任何空间,然后父布局可以根据layout_weight分配空间。

答案 3 :(得分:0)

Ralgha的回答是正确的。对于代码,您可以参考下面的代码。

请检查代码:

<LinearLayout
        android:id="@+id/register_header12"
        android:layout_width="fill_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="5dp"
        android:weightSum="14"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/register_title_image"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:contentDescription="@string/app_icon_desc"
            android:src="@drawable/logo_blue" />

        <TextView
            android:id="@+id/register_title_name"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:text="Name"
            android:textStyle="bold" />

        <Button
            android:id="@+id/bbb"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/bar_button"
            android:text="BBB"
            android:textStyle="bold" />

        <Button
            android:id="@+id/aaa"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/bar_button"
            android:text="AAA"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/setting"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="4"
            android:src="@drawable/ic_menu_manage"
            android:onClick="showSettings"

          />

        <ImageView
            android:id="@+id/signout"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="4"
            android:src="@drawable/ic_menu_blocked_user"
            android:onClick="doSignOut"
            />
    </LinearLayout>

希望这会对你有所帮助。