2011-10-26 18 views
9

bu iki durumda da aynı çıkış görünümü sonuç alamayınca, davayla 2 ile aynı çıktı sonucu almak için dava 1 düzeltmek istiyoruz Buradaki sorun:Yapay Bir TextView'un ve LinearLayout programlı

  1. TextView şişiriniz ve linearlayout ve sonra programatik olarak linelaylayout için textview ekleyin.
  2. Metin görünümü xml'de linearlayout'a eklenir. Senaryo 1 için

Kodu ve Çıktı: LayoutTestActivity.java

yılında

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</LinearLayout> 

text_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:textColor="#000000" 
    android:text="1" 
    android:textSize="20sp" 
    android:background="#AAAAAA" 
    android:gravity="center" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_marginTop="2dp" 
    android:layout_marginRight="2dp" 
/> 

onCreate yöntem Durum 2 için

çıkış görünüşüdür (doğru değil)

enter image description here

Kodu ve Güç:

main.xml LayoutTestActivity.java

içinde

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:textColor="#000000" 
     android:text="1" 
     android:textSize="20sp" 
     android:background="#AAAAAA" 
     android:gravity="center" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginTop="2dp" 
     android:layout_marginRight="2dp" 
    /> 
</LinearLayout> 

onCreate yöntem

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

çıkış görünümü (Doğru)

enter image description here

cevap

0

İlk durumda LayoutParams belirlemek zorunda. İkinci olarak, bu TextView xml içinde olduğundan otomatik olarak yapılır. Bu yardımcı olur umarım!

+0

Sanırım ilk durumda otomatik olarak gerçekleşiyor, çünkü mizanpajların ayarlandığı bir xml'den bir görünümü şişiriyor. – Raz

+0

Dimitris Makris, cevabın işe yaradı, ama Raz'ın otomatik olarak gerçekleşmesi gerektiğini söyledi. Umarım başka bir çözüm vardır. İkinizide tesekkurler. – thalsharif

14

Ben Bir değişiklik olup olmadığını emin değilim - ama benim önerim şudur:

sizin main.xml yılında LinearLayout için android:id="@+id/linearLayout" Etiketleme-sağlayın.

Sonra bunu:

Ayrıca TextView örn Şişirirken ikinci parametre olarak null alabilir veya LinearLayout lt tedarik arasında bir fark olup olmadığını test etmek isteyebilirsiniz
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    LinearLayout lt = (LinearLayout) findViewById(R.id.linearLayout); 
    TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, null); 
    lt.addView(tv); 
} 

:

TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, lt); 
+0

Ben senin çözümünü denemek ama doz 2 ile aynı çıktı vermek değil. – thalsharif

+0

Düzenin içindeki resimlerden farkı görüntülemeye çalışın - Sorunun ne olduğunu ortaya çıkarabilir. – kaspermoerch

+0

İstediğiniz şekilde fotoğraf yayınladım, umarım bu yararlı olur. Teşekkürler. – thalsharif

0

I ilk olarak, ana düzeni setContentView() yönteminde doğrudan ayarlamanız ve ardından şişirmeyi yapmanız gerektiğini düşünün.

setContentView(R.layout.main); 
    LinearLayout mainLayout = (Linearlayout) findViewbyId(R.id.mainLayoutId); 

    TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, mainLayout, false); 
    mainLayout.addView(tv); 

Bu şekilde çalışması gerektiğini düşünüyorum. xml düzen paramsini tutmak için son iki parametreyi inflate() yöntemine geçirmeniz gerekir.