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

时间:2014-10-22 08:59:15

标签: android android-layout android-linearlayout

我正在尝试设计一个基本上由以下内容组成的布局

  • 线性布局(水平)

    • 线性布局(垂直)

      • 的TextView
      • 的TextView
      • imageview的

      (垂直结束)

    • 线性布局(垂直)

      • 的TextView
      • 的TextView
      • imageview的

    (垂直结束)

(横向结束)

现在我还有2个与上述类似的线性布局(水平方向)。布局文件中共有3个。

我能够构建上述要求。但是当我运行应用程序时,视图不会均匀分布。设备屏幕的底部和侧面有很多空白区域。

怎么做?

任何更正/建议都会有很大帮助。感谢。

以下是我的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>

下面是截图。

enter image description here

4 个答案:

答案 0 :(得分:3)

以下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>

这会产生以下布局

enter image description here

答案 1 :(得分:2)

试试这段代码

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

答案 2 :(得分:1)

嵌套布局会导致性能下降。您可以改用GridView。并在单独的XML文件中创建网格项的布局。使用适配器(ViewHolder样式),将其设置为GridView。查看this了解详情。

答案 3 :(得分:1)

这种类型的布局可能会降低您的UI速度,您可以使用GridView生成此类类型的列表。请记住,嵌套视图会降低应用程序的速度,当您将这种类型的UI插入ScrollView时,它会更加明显(滚动速度非常慢)。