如何避免嵌套的权重?

我有一个XML布局inputpincode:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF000000" android:orientation="vertical" android:weightSum="1" > <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_margin="5dp" android:layout_weight="0.2" android:background="@android:drawable/edit_text" android:gravity="center_vertical" android:orientation="horizontal" > <EditText android:id="@+id/pinDisplay" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="0.85" android:background="@null" /> <ImageButton android:id="@+id/backspace" style="@android:style/Widget.Button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" android:layout_margin="3dp" android:layout_weight="0.15" android:gravity="center" android:src="@android:drawable/ic_input_delete" /> </LinearLayout> <!-- Keypad section --> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="0.8" android:baselineAligned="false" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/one" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="1" android:textAppearance="@android:attr/text" /> <Button android:id="@+id/two" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="2" /> <Button android:id="@+id/three" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="3" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/four" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="4" /> <Button android:id="@+id/five" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="5" /> <Button android:id="@+id/six" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="6" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/seven" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="7" /> <Button android:id="@+id/eight" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="8" /> <Button android:id="@+id/nine" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="9" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginBottom="10dip" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/ok" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:enabled="false" android:text="OK" android:textColor="#B8B8B8" /> <Button android:id="@+id/zero" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="0" /> <Button android:id="@+id/clear" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="Clear" /> </LinearLayout> </LinearLayout> </LinearLayout> 

布局很好,但我得到了很多关于嵌套权重的Lint警告。

嵌套的权重对性能不利

我真的不知道布局加载缓慢或任何东西。 我能做些什么来避免嵌套的重量? 或者我应该像现在这样离开它?

Solutions Collecting From Web of "如何避免嵌套的权重?"

你可以使用RelativeLayout来避免嵌套权重。

嵌套的权重对性能不利,因为测量的数量随着每一个嵌套而呈指数增长。

一般来说,您应该尝试使用RelativeLayout而不是嵌套许多LinearLayout。

从文档 :

注意:尽pipe您可以在另一个布局中嵌套一个或多个布局以实现您的UIdevise,但您应该努力保持布局层次结构尽可能浅。 如果嵌套布局较less,则布局绘制得更快(宽视图层次比深层视图层次更好)。

但是当你需要权重时, RelativeLayout对你来说帮不了什么忙。 相反,我build议使用一个TableLayout键盘,以减less嵌套布局的数量。