簡體   English   中英

在Android上動態添加按鈕作為行和列嗎?

[英]Add buttons Dynamically as rows and columns on android?

public class MainActivity extends Activity {
    int i,j;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        LinearLayout layout2 = new LinearLayout(this);
        layout2.setOrientation(LinearLayout.HORIZONTAL);
        layout2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
        LinearLayout layout1 = new LinearLayout(this);
        layout1.setOrientation(LinearLayout.VERTICAL);
        layout1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

                    for(j=0;j<5;j++){
                Button myButton = new Button(this);
                myButton.setText(""+j);
                myButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                myButton.setTextSize(20);
                layout.addView(myButton);                   
        }
                    layout1.addView(layout);
                    for(j=5;j<10;j++){
                        Button myButton = new Button(this);
                        myButton.setText(""+j);
                        myButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        myButton.setTextSize(20);
                        layout2.addView(myButton);                      
                }
                    layout1.addView(layout2);

        setContentView(layout1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

以上是我的代碼。 我能夠動態創建具有5列的兩行按鈕。 但是在這里,我必須手動為行創建布局(layout,layout2)。 我以為我會定義一個linearlayout數組。 但是當我也嘗試指定setOrientation和setLayoutParams時,程序崩潰。 我試過了

layout3[0].setOrientation(LinearLayout.HORIZONTAL);

但是程序崩潰了。

其實很簡單

您需要指定

layout3[i] = new LinearLayout(this);
            layout3[i].setOrientation(LinearLayout.HORIZONTAL);
            layout3[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

然后就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM