I have a xml layout to enter a pincode:
<?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>
The layout is fine, but I get a lot of Lint warnings about nested weights.
Nested weights are bad for performance
I don’t really notice the layout loading slow or anything. What can I do to avoid nested weights? Or should I just leave it like it is?
You could use RelativeLayout to avoid the nested weights.
Nested weights are bad for performance because the number of measurements increase exponentially with each one nested.