¿Cómo evitar los pesos anidados?

Tengo un diseño xml para introducir un código PIN:

<?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> 

El diseño está bien, pero tengo un montón de advertencias Lint sobre pesas anidadas.

Pesos anidados son malos para el rendimiento

Realmente no me doy cuenta de la carga de diseño lento o nada. ¿Qué puedo hacer para evitar pesas anidadas? ¿O debo dejarlo como es?

Puede utilizar RelativeLayout para evitar los pesos anidados.

Los pesos anidados son malos para el rendimiento porque el número de mediciones aumenta exponencialmente con cada uno anidado.

En general, debe intentar utilizar un RelativeLayout en lugar de anidar muchos LinearLayouts.

De la documentación :

Nota: Aunque puede anidar uno o más diseños dentro de otro diseño para lograr su diseño de interfaz de usuario, debe esforzarse por mantener la jerarquía de diseño lo más superficial posible. Su diseño se dibuja más rápido si tiene menos diseños anidados (una jerarquía de vista amplia es mejor que una jerarquía de vista profunda).

Pero cuando usted necesita pesos, como ahora, un RelativeLayout no le ayudaría mucho; En su lugar, sugiero usar un TableLayout para su teclado, para reducir el número de diseños anidados.

  • Carpeta de valores para dimen.xml para tamaño de pantalla pequeño
  • ¿Cómo puedo centralizar y dejar el texto justificación en EditText?
  • FrameLayout margen no funciona
  • Ver movido pero aún en la esquina superior izquierda
  • GUIs basadas en XML y rendimiento
  • Estilo appcompat-v7 Fondo de menú de la barra de herramientas
  • ¿Es posible dar estados a compounddrawables de textview?
  • Fuerza el teclado suave para mostrar cuando EditText consigue el foco
  • ¿Cómo ordenar android Z?
  • Cómo diseñar una ruleta en Android
  • Incluir el mismo diseño varias veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.