LinearLayout最常用的属性之一是其子视图的权重。权重定义一个视图与LinearLayout中的其他视图相比将消耗多少空间。
当您要为一个组件提供特定的屏幕空间时,可以使用重量。
关键特性:
weightSum是所有子视图的权重的总和。如果未指定weightSum,则系统将自行计算所有权重的总和。
layout_weight 指定小部件将占用的总重量中的空间量。
码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="4"> <EditText android:layout_weight="2" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Type Your Text Here" /> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Text1" /> <Button android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Text1" /> </LinearLayout>
输出为:
现在,即使设备的尺寸较大,EditText也将占用屏幕空间的2/4。因此,您的应用在所有屏幕上的外观都是一致的。
注意:此处layout_width是保留的,0dp因为小部件空间是水平划分的。如果小部件要垂直对齐,layout_height则将设置为0dp。这样做是为了提高代码的效率,因为在运行时系统不会尝试分别计算宽度或高度,因为它是由重量来管理的。如果改为使用,wrap_content则系统将在应用权重属性之前尝试先计算宽度/高度,这会导致另一个计算周期。