![](/img/trans.png)
[英]How do I programmatically distribute child views evenly in a horizontal linear layout?
[英]How can I distribute views in a linear layout (which is a child of another linear layout) evenly?
我正在尝试设计一个基本上由以下内容组成的布局
线性布局(水平)
线性布局(垂直)
(垂直结尾)
线性布局(垂直)
(垂直结束)
(横向结束)
现在我还有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>
以下是截图。
以下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>
这将产生以下布局
试试这段代码
<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>
嵌套布局会导致性能下降。 您可以使用GridView
。 在单独的XML文件中创建网格项的布局。 使用适配器( ViewHolder
样式),将其设置为GridView
。 查看此信息以获取更多信息。
这种类型的布局可能会降低您的UI速度,您可以使用GridView生成此类类型的列表。 请记住,嵌套视图会降低您的应用程序的速度,并且当您将这种类型的UI插入ScrollView时,它更加可见(滚动会非常慢)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.