查看重量
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>
输出是:
http://i.stack.imgur.com/tEbKrl.jpg
现在,即使设备的尺寸较大,EditText 也将占据屏幕空间的 2/4。因此,你的应用程序外观在所有屏幕上都是一致的。
注意: 这里 layout_width
保持 0dp
,因为小部件空间是水平划分的。如果要将小部件垂直对齐,则 layout_height
将设置为 0dp
。这样做是为了提高代码的效率,因为在运行时系统不会分别尝试计算宽度或高度,因为这是由权重管理的。如果你改为使用 wrap_content
,系统将在应用权重属性之前首先尝试计算宽度/高度,这会导致另一个计算周期。