java Android 拉伸布局高度,使布局占据屏幕的 50%

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6712142/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 16:58:46  来源:igfitidea点击:

Android stretch layout heights so that layout takes up 50% of screen

javaandroidxml

提问by littleK

I have a LinearLayout that contains sublayouts which essentially mimick a 3x2 grid. Each sublayout takes up an equal amount of space across the screen (in width). Now, I'm looking to have the two rows of sublayouts stretch in height so that each takes up 50% of the screen. I've tried playing around with the weights, however I don't know how to modify my existing layout code without messing up the existing weights in place used for the widths. Can anyone provide me with some help? Thanks! Here is my layout code:

我有一个 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>

回答by HenrikS

Apply equal android:layout_weight (for example 50) values on the two "main-parent" LinearLayouts in your existing code. This will make them each take half of any existing free space.

在现有代码中的两个“主-父”线性布局上应用相等的 android:layout_weight(例如 50)值。这将使它们各自占用任何现有可用空间的一半。

Then put all of your your code in another new LinearLayout. This new one should be set to fill-parent in both width and height. Its orientation should be vertical.

然后将所有代码放在另一个新的 LinearLayout 中。这个新的应该在宽度和高度上都设置为 fill-parent。它的方向应该是垂直的。

This should get you on the way but you will probably have to tweak your existing code to make it appear exactly as you want.

这应该会让您顺利进行,但您可能需要调整现有代码以使其完全符合您的要求。

I run a short test using this code:

我使用以下代码运行了一个简短的测试:

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

回答by Kevin Qiu

if you have two views each with layout_weight = 1 and layout_height = "fill_parent" then they should be sharing the screen space equally

如果您有两个视图,每个视图的 layout_weight = 1 和 layout_height = "fill_parent" 那么它们应该平均共享屏幕空间

回答by ihrupin

Here is how I made it for me:

这是我为我制作的方法:

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

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