Android 查看重量

示例

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则系统将在应用权重属性之前尝试先计算宽度/高度,这会导致另一个计算周期。