2011-10-26 5 views
9

問題を膨らま:ここで私はこれらの2つの場合で同じ出力ビューの結果を得ることはありません、私はケース2と同じ出力結果を得るために、ケース1を修正したいのTextViewとのLinearLayoutにプログラム的

  1. はのTextViewを膨らませると、 linearlayoutに追加し、プログラムでlinearlayoutにtextviewを追加します。
  2. xmlのlinearlayoutにtextviewを追加します。ケース1の場合

コードおよび出力:LayoutTestActivity.java

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メソッド ケース2の場合

出力ビュー(正しくない)

enter image description here

コードおよび出力:

main.xml LayoutTestActivity.java

<?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メソッド

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

出力ビュー(正)

enter image description here

答えて

0

あなたが最初のケースでLayoutParamsを設定する必要があります。 2番目の方法では、これはTextViewがxmlに入っているので自動的に行われます。お役に立てれば!

+0

layoutparamsが設定されているXMLからビューを膨張させるので、最初のケースで自動的に発生すると思います。 – Raz

+0

Dimitris Makris、あなたの答えは仕事ですが、Razは自動的に起こるはずだと言ったので。私はもう一つの解決策があることを願っています。あなたのおかげです。 – thalsharif

14

私はそれが何の違いを作るかはわからない - しかし、私の提案はこれです:

はあなたのmain.xmlLinearLayoutためandroid:id="@+id/linearLayout" -tagを提供します。

そして、次の操作を行います。

あなたはまた、 TextView例えば膨らませるときに、第2のパラメータとして nullたり LinearLayout ltの供給との間に差があるかどうかをテストすることをお勧めします
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

私はあなたの解決策を試していますが、ケース2と同じ出力を得られません。お試しいただきありがとうございます。 – thalsharif

+0

レイアウトの違いの写真を投稿してみてください - 問題が何であるかを明らかにすることがあります。 – kaspermoerch

+0

私はあなたが尋ねるように写真を掲載しました。これが助けになることを願っています。ありがとう。 – thalsharif

0

私はまず、setContentView()メソッドのメインレイアウトを直接設定してから、後でinflateを作成する必要があると考えてください。

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

私はこのように動作するはずです。 xmlレイアウトのパラメータを保持するには、最後の2つのパラメータをinflate()メソッドに渡す必要があります。

関連する問題