如何使用RelativeLayout使用相同大小的n个按钮进行活动?

时间:2011-08-04 12:28:52

标签: android android-layout

我需要以编程方式设计一个具有6个按钮(相同大小h和w)的活动,并且所有按钮都显示完整的活动。

我尝试过这样做:RelativeLayout with buttons并修改测试。

显示一个按钮!!! `

    setContentView(R.layout.main);      

    ArrayList<Button> buttons = new ArrayList<Button>();
    //RelativeLayout bg = (RelativeLayout) findViewById(R.layout.main);

    for (int i = 0; i < 10; i++) {
        Button newButton = new Button(this);
        newButton.setId(100 + i + 1); // ID of zero will not work
        newButton.setText("XXXX");
        buttons.add(newButton);
        // New layout params for each button
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

        if (i > 0) {
            // using getId() here in case you change how you assign IDs
            int id = buttons.get(i - 1).getId();
            lp.addRule(RelativeLayout.RIGHT_OF, id);
        }
        this.addContentView(newButton, lp);
    }`

如果确定,请查看此行: this.addContentView(newButton,lp);

感谢!!!

马特乌斯

1 个答案:

答案 0 :(得分:0)

从您的问题中,您是否希望所有按钮均匀分布在活动空间或每个按钮上以接管所有活动空间,这一点有点不清楚?

在第一种情况下,您需要的是一个LinearLayout,其layout_weight为按钮设置为1。

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.weight = 1;

在第二种情况下,我认为最好使用FrameLayout并让按钮通过设置来占据所有空间

FrameLayout.LayoutParams.FILL_PARENT

两个维度。