1

プログラムで複数のボタンを作成するために以下のコードを試しましたが、入力に基づいてボタンを作成する必要があるアプリケーションに従って単一のボタンを作成します。たとえば、入力が 3 の場合、レイアウトに 3 つのボタンを作成する必要があることを意味します。ご参考までに、サンプル画像と私のコードを添付しました。

for (int i = 0; i < array_of_btn_input.size(); i++) {
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);

            LinearLayout layout = new LinearLayout(getApplicationContext());
            LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            layout.setOrientation(LinearLayout.VERTICAL);
            layout.setLayoutParams(params);
            Button button1 = new Button(getApplicationContext());
            button1.setLayoutParams(params1);
            button1.setText("button");

            layout.addView(button1);
            main_layer.addView(layout);
}

ここに画像の説明を入力

4

4 に答える 4

1

あなたの例で、グローバル コンテナー (main_layer) が相対レイアウトまたはフレーム レイアウトである場合、それらを互いの上に配置しました。そのため、バック オーダーのものは表示されません。

これを試してください。

LinearLayout main_layer= (LinearLayout) findViewById(id.main_layer);


for (int i = 0; i < 10; i++) 
{
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

LinearLayout layout = new LinearLayout(getApplicationContext());
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(params);
Button button1 = new Button(getApplicationContext());
button1.setLayoutParams(params1);
button1.setText("button");

layout.addView(button1);
main_layer.addView(layout);
}
于 2012-11-15T15:25:21.643 に答える
0

これを試して

LinearLayout llParent = (LinearLayout) findViewById(R.id.llParent);
llParent.removeAllViews();
for (int i = 0; i < array_of_btn_input.size(); i++) {
    BSView b = new BSView(this, new SimpleThumbBean(i + 1, bsList
            .get(i).getLabel(), bsList.get(i).getThumbUrl()));
    LinearLayout.LayoutParams llDynamic = new LinearLayout.LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    llDynamic.weight = 1f;
    llParent.addView(b, llDynamic);
}

llParent は定義済みのレイアウトであり、レイアウトを動的に追加する前に必ず removeAllViews() を呼び出してください。

BSView は私自身のカスタム ビューです。必要に応じて、BSView を通常の Button に設定できます。

于 2012-11-15T15:19:08.350 に答える
0

for ループ内で複数の新しい線形レイアウトを作成しています。線形レイアウトは for ループから取り出して、ボタンを追加してみる必要があります。

for ループの 1 回目の実行により、新しい線形レイアウトが作成され、ボタンが追加されます

forループの2回目の実行により、新しい線形レイアウトが作成され、以前に追加されたレイアウトの上にボタンが追加されます

于 2012-11-15T15:13:22.747 に答える
0

ここでは、ボタンごとに新しい LinearLayout を作成しています...もっと似たものを試してください...

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(params);

for (int i = 0; i < array_of_btn_input.size(); i++) {
    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

    Button button1 = new Button(getApplicationContext());
    button1.setLayoutParams(params1);
    button1.setText("button");

    layout.addView(button1);

}

main_layer.addView(レイアウト);

于 2012-11-15T15:15:55.150 に答える