LinearLayout 是一个视图组,用于使所有子视图在单个方向(垂直或水平)保持对齐。您可以使用 android:orientation 属性指定布局方向。
LinearLayout。
LinearLayout 的所有子视图依次堆叠,因此无论子视图有多宽,垂直列表每行均只有一个子视图。水平列表只有一行高,其高度为最高子视图的高度加上内边距。LinearLayout 会考虑子视图之间的边距以及每个子视图的对齐方式(右对齐、居中对齐或左对齐)。
布局权重
LinearLayout 还支持使用 android:layout_weight 属性为各个子视图分配权重。此属性会根据视图在屏幕上占据的空间大小,向视图分配“重要性”值。如果拥有更大的权重值,视图便可展开,填充父视图中的剩余空间。子视图可指定权重值,然后系统会按照子视图所声明的权重值比例,为其分配视图组中的任何剩余空间。默认权重为零。
均等分布
如要创建线性布局,让每个子视图使用大小相同的屏幕空间,请将每个视图的 android:layout_height 设置为 "0dp"(针对垂直布局),或将每个视图的 android:layout_width 设置为 "0dp"(针对水平布局)。然后,将每个视图的 android:layout_weight 设置为 "1"。
不等分布
您也可创建线性布局,让子元素使用大小不同的屏幕空间。请参考以下示例:
- 假设您有三个文本字段:两个的权重值为 1,第三个的默认权重值为 0。权重值为 0 的第三个文本字段仅占据其内容所需的区域。另外两个权重值为 1 的文本字段将以同等幅度展开,填充测量三个字段的内容后仍剩余的空间。
- 如果您有三个文本字段,其中两个的权重值为 1,第三个的权重值为 2,那么在测量所有三个字段的内容后剩余的空间将按以下方式分配:一半分配给权重值为 2 的字段,另一半平均分配给权重值为 1 的字段。
下图和代码段展示了布局权重如何在“发送消息”activity 中发挥作用。To 字段、Subject 行和 Send 按钮均仅占用各自所需的高度。消息区域会占用 activity 的剩余高度。
LinearLayout 中的三个文本字段和一个按钮。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="end" android:text="@string/send" /> </LinearLayout>
如需详细了解 LinearLayout 每个儿童视角的可用属性,请参阅 LinearLayout.LayoutParams。