2012-10-15 19 views
8

Ho un layout di XML per inserire un codice PIN:Come evitare i pesi nidificati?

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

Il layout va bene, ma ho un sacco di avvertimenti Lint circa pesi nidificate.

pesi nidificate sono male per le prestazioni

non mi accorgo del layout caricamento lento o niente. Cosa posso fare per evitare pesi nidificati? O dovrei lasciarlo come è?

risposta

7

È possibile utilizzare RelativeLayout per evitare i pesi nidificati.

I pesi nidificati sono negativi per le prestazioni poiché il numero di misurazioni aumenta esponenzialmente con ciascuna di esse annidata.

10

In generale, si dovrebbe provare a utilizzare uno RelativeLayout anziché nidificare molti LinearLayout.

Da documentation:

Nota: Anche se è possibile nidificare uno o più layout all'interno di un altro layout al acheive vostra progettazione dell'interfaccia utente, si dovrebbe cercare di mantenere la gerarchia di layout come superficiale possibile. Il layout si disegna più rapidamente se ha meno layout nidificati (una gerarchia di viste ampie è migliore di una gerarchia di viste profonde ).

Ma quando hai bisogno di pesi, come ora, un RelativeLayout non ti aiuterà molto; invece, suggerisco di usare un TableLayout per la tastiera, per ridurre il numero di layout nidificati.

Problemi correlati