2012-05-02 13 views
51

あなたは与えられた位置でRelativeLayoutにプログラムで子ビューを追加するという非常に単純な例を教えていただけますか?私は適切なRelativeLayout.LayoutParamsインスタンスを作成する方法を理解していないRelativeLayoutにプログラムでビューを追加する方法は?

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

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="107dp" 
    android:layout_marginTop="103dp" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

例えば

は、以下のXMLを反映させます。

答えて

91

あなたが始めるために相続人は一例に、該当するとして、残りを埋める:RelativeLayout.LayoutParamsやコンストラクタのための

TextView tv = new TextView(mContext); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.leftMargin = 107 
... 
mRelativeLayout.addView(tv, params); 

ドキュメントはまずhere

+0

申し訳ありませんが、最初のパラメータとして「Context」がない「RelativeLayout.LayoutParams」コンストラクタについては、どこで知りましたか? –

+1

@SuzanCioc上記の編集を参照してください – JRaymond

+0

ああ、申し訳ありませんが、幅と高さが正確な値になるはずです。 –

27

あり、あなたはあなたにIDを与える必要がありますRelativeLayoutはrelativeLayout1と言うことができます。

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.relativeLayout1); 
TextView mTextView = new TextView(context); 
mTextView.setText("Dynamic TextView"); 
mTextView.setId(111); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
mainLayout.addView(mTextView, params); 
+0

'RelativeLayout.LayoutParams'コンストラクタはどこに記述されていますか?すべてのプロトタイプは最初のパラメータとして 'Context'を持っているので、http://developer.android.com/reference/android/widget/RelativeLayout.htmlはここにはありません。 –

+1

ここをクリックしてくださいhttp://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html RelativeLayout.LayoutParams(int w、int h) –

+0

「R.id.relativeLayout1」とは何ですか?を参照して? – Si8

関連する問題