简体   繁体   English

如何在线性布局(另一个线性布局的子级)中均匀分布视图?

[英]How can I distribute views in a linear layout (which is a child of another linear layout) evenly?

I am trying to design a layout which basically consists of the following 我正在尝试设计一个基本上由以下内容组成的布局

  • Linear Layout (Horizontal) 线性布局(水平)

    • Linear Layout (Vertical) 线性布局(垂直)

      • textview 的TextView
      • textview 的TextView
      • imageview ImageView的

      (end of vertical) (垂直结尾)

    • Linear Layout (Vertical) 线性布局(垂直)

      • textview 的TextView
      • textview 的TextView
      • imageview ImageView的

    (end of vertical) (垂直结束)

(end of horizontal) (横向结束)

Now I have 2 more Linear Layouts (Horizontal orientation) of the similar kind as stated above. 现在我还有2个类似于上述类似的线性布局(水平方向)。 A total of 3 in the layout file. 布局文件中共有3个。

I was able to construct the above requirement. 我能够构造以上要求。 But when I run the application, the views aren't getting distributed evenly. 但是,当我运行该应用程序时,视图并不会平均分布。 There is a lot of white space at the bottom and the sides of the device screen. 设备屏幕的底部和侧面有很多空白。

How to do that? 怎么做?

Any corrections/suggestions can be of great help. 任何更正/建议都可以提供很大帮助。 Thanks. 谢谢。

Below is my xml file 以下是我的xml文件

 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:baselineAligned="false" android:orientation="horizontal" > <LinearLayout android:id="@+id/ll1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Connected" android:textSize="12sp" /> <TextView android:id="@+id/textView14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/time" android:textSize="12sp" /> <ImageView android:id="@+id/lte3G" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/lte" /> </LinearLayout> <LinearLayout android:id="@+id/ll2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView22" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Operator" android:textSize="12sp" /> <TextView android:id="@+id/textView23" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Docomo" android:textSize="12sp" /> <ImageView android:id="@+id/operator" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/network" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:baselineAligned="false" android:orientation="horizontal" > <LinearLayout android:id="@+id/ll3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView16" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Short" android:textSize="12sp" /> <TextView android:id="@+id/textView17" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Messages" android:textSize="12sp" /> <ImageView android:id="@+id/SMS" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/sms" /> </LinearLayout> <LinearLayout android:id="@+id/ll4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView25" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Connected1" android:textSize="12sp" /> <TextView android:id="@+id/textView26" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Clients" android:textSize="12sp" /> <ImageView android:id="@+id/clients" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/clients" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:baselineAligned="false" android:orientation="horizontal" > <LinearLayout android:id="@+id/ll5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView19" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Traffic" android:textSize="12sp" /> <TextView android:id="@+id/textView20" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Usage" android:textSize="12sp" /> <ImageView android:id="@+id/traffic" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/traffic" /> </LinearLayout> <LinearLayout android:id="@+id/ll6" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/textView28" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Battery" android:textSize="12sp" /> <TextView android:id="@+id/textView29" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:text="@string/Status" android:textSize="12sp" /> <ImageView android:id="@+id/imageView7" android:layout_width="64dp" android:layout_height="64dp" android:gravity="center_horizontal|center_vertical" android:src="@drawable/battery" /> </LinearLayout> </LinearLayout> 

Below is the screenshot. 以下是截图。

在此输入图像描述

The following xml solves your problem 以下xml解决了您的问题

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.example.stackoverflow_2.MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:baselineAligned="false"
        android:orientation="horizontal"
        android:weightSum="2" >

        <LinearLayout
            android:id="@+id/ll1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Connected"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/time"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/lte3G"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/lte" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView22"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Operator"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView23"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Docomo"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/operator"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/network" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/ll3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView16"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Short"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView17"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Messages"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/SMS"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/sms" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView25"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/Connected1"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView26"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="Clients"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/clients"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/clients" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/ll5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView19"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="Traffic"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView20"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="Usage"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/traffic"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/traffic" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll6"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView28"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="Battery"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/textView29"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:text="Status"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/imageView7"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:gravity="center_horizontal|center_vertical"
                android:src="@drawable/battery" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

This produces following layout 这将产生以下布局

在此输入图像描述

try this code 试试这段代码

    <LinearLayout
        android:id="@+id/ll1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView13"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
           android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Connected"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/time"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/lte3G"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/lte" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView22"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Operator"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView23"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
           android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Docomo"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/operator"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/network" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/ll3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView16"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Short"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView17"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Messages"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/SMS"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/sms" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView25"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Connected1"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView26"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Clients"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/clients"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/clients" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/ll5"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView19"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Traffic"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView20"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Usage"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/traffic"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/traffic" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll6"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView28"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Battery"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView29"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
           android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/Status"
            android:textSize="12sp" />

        <ImageView
            android:id="@+id/imageView7"
            android:layout_width="64dp"
            android:layout_height="64dp"
           android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/battery" />
    </LinearLayout>
</LinearLayout>

Nested Layouts cause bad performance. 嵌套布局会导致性能下降。 You can use a GridView instead. 您可以使用GridView And in a seperate XML file create a grid item's layout. 在单独的XML文件中创建网格项的布局。 Using an adapter( ViewHolder style), set it to GridView . 使用适配器( ViewHolder样式),将其设置为GridView Check out this for more info. 查看信息以获取更多信息。

This type of Layout may slow down your UI, you can use GridView to generate such types of list. 这种类型的布局可能会降低您的UI速度,您可以使用GridView生成此类类型的列表。 Remember that nested views can slow down your application, and it is more visible when you insert that type of UI into ScrollView (Scroll will be very slow). 请记住,嵌套视图会降低您的应用程序的速度,并且当您将这种类型的UI插入ScrollView时,它更加可见(滚动会非常慢)。

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

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