3

xml ベースのレイアウトと「手動」レイアウトを組み合わせる方法はありますか? 例:

次のような「標準」xml レイアウトを使用します。

 setContentView(R.layout.mainscreen);

そして、次のように追加して、さらに動的なコンテンツが必要です。

 LinearLayout layout = new LinearLayout(this);
 setContentView(layout);
 layout.addView(new CreateItemButton(this, "Button", 1));

上記の行のように新しいレイアウトを作成できないことは承知していますが、おそらく何らかの方法で xml レイアウトを初期化する必要があります。しかし、動的にコンポーネントを追加したい場合、それは可能ですか、それとも 100% 手動のレイアウトを使用する必要がありますか? それとも、おそらく別の、よりエレガントで正しい方法がありますか?

(私がやりたいのは、データベースから取得したエントリに基づいてボタンを作成することです。これらは数とテキスト/コンテンツに注意を払うため、xmlレイアウトファイルではなく動的に追加しようとします.

4

2 に答える 2

6

任意の要素を動的に xml レイアウトに追加できます。動的要素を追加する xml レイアウトにコンテナーが必要です。id="container" で空の LinearLayout と言います。また、すべてを動的に構築して setContentView(yourView); にすることもできます。yourView は、他の子要素が追加されたルート レイアウト要素です。

元:

Button myButton = new Button(this);
myButton.setLayoutParams(params);
LinearLayout container = (LinearLayout)findViewById(R.id.container);
container.addView(myButton);

また

LinearLayout myLayout = new LinearLayout(this);  
...
container.addView(myLayout);
于 2012-08-02T22:39:11.037 に答える
1

お役に立てば幸いです。

このコードを試してください...

public class MainActivity extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);   

       RelativeLayout rl= (RelativeLayout) findViewById(R.id.rl);
       Button b2=new Button(this);
       b2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
       b2.setText("Dynamic");
       b2.setTextSize(30);
       b2.setTextColor(b1.getTextColors());
       rl.addView(b2);
    }
}
于 2012-08-03T05:21:14.053 に答える