檢視重量

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,系統將在應用權重屬性之前首先嚐試計算寬度/高度,這會導致另一個計算週期。