简体   繁体   English

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

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

I have a LinearLayout that contains sublayouts which essentially mimick a 3x2 grid.我有一个 LinearLayout,其中包含基本上模仿 3x2 网格的子布局。 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.现在,我希望让两行子布局在高度上拉伸,以便每行占据屏幕的 50%。 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
        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>

Apply equal android:layout_weight (for example 50) values on the two "main-parent" LinearLayouts in your existing code.在现有代码中的两个“主父”线性布局上应用相等的 android:layout_weight(例如 50)值。 This will make them each take half of any existing free space.这将使它们各自占用任何现有可用空间的一半。

Then put all of your your code in another new LinearLayout.然后把你所有的代码放在另一个新的 LinearLayout 中。 This new one should be set to fill-parent in both width and height.这个新的应该设置为宽度和高度的填充父级。 Its orientation should be vertical.它的方向应该是垂直的。

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>

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" 那么它们应该平等地共享屏幕空间

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM