2012-10-15 18 views
8

मैं एक पिन कोड दर्ज करने के लिए एक XML लेआउट है:नेस्टेड वजन से कैसे बचें?

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

लेआउट ठीक है, लेकिन मैं नेस्ट वजन के बारे में एक प्रकार का वृक्ष चेतावनी का एक बहुत मिलता है।

नेस्टेड वजन प्रदर्शन

मैं वास्तव में लेआउट लोड हो रहा है धीमी गति से या कुछ भी सूचना नहीं के लिए बुरा है। नेस्टेड वजन से बचने के लिए मैं क्या कर सकता हूं? या मुझे बस इसे छोड़ देना चाहिए?

उत्तर

7

आप नेस्टेड वजन से बचने के लिए रिलेवेटिवआउट का उपयोग कर सकते हैं।

नेस्टेड वजन प्रदर्शन के लिए खराब हैं क्योंकि माप की संख्या प्रत्येक नेस्टेड के साथ तेजी से बढ़ जाती है।

10

सामान्यतः, आपको कई LinearLayouts घोंसले के बजाय RelativeLayout का उपयोग करने का प्रयास करना चाहिए।

documentation से:

नोट: एक और लेआउट भीतर एक या अधिक लेआउट अपने यूआई डिजाइन हासिल करने के लिए यद्यपि आप घोंसला कर सकते हैं, तो आप अपने लेआउट पदानुक्रम संभव के रूप में उथले रखने के लिए प्रयास करना चाहिए। यदि आपका कम घोंसला वाला लेआउट है (तो विस्तृत दृश्य पदानुक्रम गहरी दृश्य पदानुक्रम से बेहतर है) आपका लेआउट तेज़ी से खींचता है।

लेकिन जब आपको वजन की आवश्यकता होती है, तो अब RelativeLayout आपको बहुत मदद नहीं करेगा; इसके बजाय, मैं नेस्टेड लेआउट की संख्या को कम करने के लिए, अपने कीपैड के लिए TableLayout का उपयोग करने का सुझाव देता हूं।

संबंधित मुद्दे