2011-10-13 33 views
5

Ben düzeni var ve llInflater şişirmek ancak yükseklik küçük

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

gibi

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); 

orada mı şişirmek istiyorsunuz (wrap_content benziyor ve fill_parent ihtiyaç)

<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> 
Diğer xml içinde

, ama sorun şişirdiğinde gösterir ama yükseklik büyüktür (fill_parent, wrap_content gibi görünüyor, ama wrap_content yok düzeni). Birisi bana yardım edebilir mi ? Bir kök görünümü temin edilirse

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); 

:

yashwanth Kumar doğru yorum belirtildiği gibi
+0

çünkü bu 2tags olabilecek .. android: layout_marginTop = "20dp" android: layout_marginBottom = "20dp" – ngesh

+2

null, üst görünümde boş görünümle değiştirin. –

cevap

14

, şişirme-yöntemin ikinci parametre, yeni görünümü ekleneceği kök görünümü olmalıdır inflate-çağrısı, LayoutInflator, bu görünüm için generateLayoutParams(ViewGroup.LayoutParams p) yöntemini çağırır, bazı LayoutParams'ları (temel olarak bir görünümün ne kadar büyük olabileceği/olması gerektiği hakkında bilgi içerir) yeni görünüme iletilir.

Kök görünüm sağlarsanız, şişirilmiş görünümün root.addView(View child, LayoutParams params) aracılığıyla kök görünümüne otomatik olarak ekleneceğini unutmayın. Bu değer, yeni görünümü kök görünümüne otomatik olarak ilave edilmez, fakat yine de LayoutParams setLayoutParams(params) ile ayarlanır, false ise

Ayrıca, şişirme yöntemine göre (boolean attachToRoot) için bir üçüncü parametre geçebilir. Eğer (belirli bir konumu/endeksine örneğin) kök görünümüne elle görüntülemek eklemek için değnek varsa bu kullanabilirsiniz:

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

harika cevap, doğru cevap. – VinceStyling