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