2011-10-13 11 views
5

ho il layout e voglio gonfiare cheInflater gonfiare ma l'altezza è di piccole dimensioni (sembra wrap_content e hanno bisogno di fill_parent)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 
    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    >  
    </EditText> 

</LinearLayout> 

come

LinearLayout ll=(LinearLayout)findViewById(R.id.llContainer); 
    View view; 
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    view = inflater.inflate(R.layout.question_free_text, null); 
    ll.addView(view); 

dove ll è

<LinearLayout 
    android:id="@+id/llContainer" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginTop="20dp" 
    android:layout_marginBottom="20dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
> 
</LinearLayout> 

in altro xml, ma il problema è quando si gonfia, ma l'altezza è grande (fill_parent, sembra wrap_content, ma non c'è wrap_content in disposizione). Qualcuno può aiutarmi ?

+0

potrebbe essere a causa di questi 2tags .. android: layout_marginTop = "20dp" Android: layout_marginBottom = "20dp" – ngesh

+2

sostituisce null con la vista genitore, durante il gonfiaggio. –

risposta

14

Come Yashwanth Kumar correttamente menzionato nei commenti, il secondo parametro di gonfiaggio-metodo dovrebbe essere la visualizzazione principale in cui verrà inserito il nuovo vista:

LinearLayout ll = (LinearLayout) findViewById(R.id.llContainer); 
View view; 
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.question_free_text, ll); 

Se una vista radice è previsto nel inflate-call, il LayoutInflator chiama il metodo generateLayoutParams(ViewGroup.LayoutParams p) di questa vista radice per ottenere alcuni LayoutParams (contenenti sostanzialmente informazioni su quanto può/dovrebbe essere grande una vista) che verranno passati alla nuova vista.

Si noti che se si fornisce una vista radice, la vista gonfiata verrà automaticamente aggiunta alla vista radice tramite root.addView(View child, LayoutParams params).

È inoltre possibile passare un terzo parametro al metodo gonfiare-(boolean attachToRoot), se questo valore è false, la nuova visualizzazione non verrà aggiunto automaticamente alla visualizzazione principale, ma le LayoutParams sono ancora impostato con setLayoutParams(params). È possibile utilizzare questo se si bacchetta di aggiungere di visualizzare manualmente alla visualizzazione radice (ad esempio in una specifica posizione/index):

LinearLayout ll = (LinearLayout) findViewById(R.id.llContainer); 
View view; 
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.question_free_text, ll, false); // the LayoutParams of view are set here 
ll.addView(view, 2); 
+1

ottima risposta, risposta corretta. – VinceStyling

Problemi correlati