Android拉伸布局高度使布局占用屏幕的50%

时间:2011-07-15 19:21:19

标签: java android xml

我有一个LinearLayout,它包含基本上模仿3x2网格的子布局。每个子布局在屏幕上占据相同的空间(宽度)。现在,我希望两排子布局在高度上伸展,这样每个子布局占据屏幕的50%。我已经尝试过使用权重,但是我不知道如何修改现有的布局代码而不会弄乱用于宽度的现有权重。任何人都可以给我一些帮助吗?谢谢!这是我的布局代码:

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_marginBottom="2dip"
        android:layout_height="wrap_content"    >

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginRight="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage1"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>


            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginLeft="1dip"
                android:layout_marginRight="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage2"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage2"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginLeft="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage3"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage3"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"    >

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginRight="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage4"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage4"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>


            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginLeft="1dip"
                android:layout_marginRight="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage5"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage5"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="0dp"
                android:layout_weight="50"
                android:padding="10dip"
                android:layout_marginLeft="1dip"
                android:background="@drawable/detail_row"
                android:layout_height="wrap_content"    >

                    <ImageView
                        android:id="@+id/menuImage6"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <TextView
                        android:id="@+id/textImage6"
                        android:layout_column="1"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:text=""
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

            </LinearLayout>

    </LinearLayout>

3 个答案:

答案 0 :(得分:7)

在现有代码中的两个“主 - 父”LinearLayouts上应用相等的android:layout_weight(例如50)值。这将使他们每个占用任何现有空闲空间的一半。

然后将您的所有代码放入另一个新的LinearLayout中。这个新的应该设置为宽度和高度填充父级。它的方向应该是垂直的。

这可以帮助您解决问题,但您可能需要调整现有代码,使其完全按照您的要求显示。

我使用此代码进行简短测试:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_marginBottom="2dip"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_marginBottom="2dip"
        android:layout_weight="50"
        android:layout_height="wrap_content">

        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginRight="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage1"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>


        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginLeft="1dip"
            android:layout_marginRight="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage2"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage2"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginLeft="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage3"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage3"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout android:orientation="horizontal"
        android:layout_weight="50"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginRight="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage4"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage4"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>


        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginLeft="1dip"
            android:layout_marginRight="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage5"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage5"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

        <LinearLayout android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="50" android:padding="10dip"
            android:layout_marginLeft="1dip"
            android:background="@drawable/icon"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/menuImage6"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/textImage6"
                android:layout_column="1"
                android:layout_gravity="center_horizontal|center_vertical"
                android:text="" android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </LinearLayout>
</LinearLayout>

答案 1 :(得分:5)

如果你有两个视图,每个视图都有layout_weight = 1和layout_height =“fill_parent”那么他们应该平等地共享屏幕空间

答案 2 :(得分:2)

以下是我为我制作的方式:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="100">
    <LinearLayout android:layout_weight="50"
        android:layout_width="match_parent"
        android:id="@+id/linearLayout1"
        android:layout_height="wrap_content"
        android:orientation="vertical"></LinearLayout>
</LinearLayout>

http://www.hrupin.com/2012/02/how-to-set-view-width-height-in-percentage-of-parent-view-in-android

相关问题