如何在Android

时间:2015-07-27 01:31:00

标签: android android-layout

我正在开发计算器。

我从这里拿了一些示例代码。

我的第一个挑战是如何在循环中创建9个按钮,而无需在代码中写入任何内容。

所以我使用了这段代码。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);  //Can also be done in xml by android:orientation="vertical"

        for (int i = 0; i < 3; i++) {
            LinearLayout row = new LinearLayout(this);
            row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

            for (int j = 0; j < 3; j++) {
                Button btnTag = new Button(this);
                btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                btnTag.setText(String.valueOf (j + 1 + (i * 3)));
                btnTag.setId(j + 1 + (i * 3));
                row.addView(btnTag);
            }

            layout.addView(row);
        }
        setContentView(layout);

    }

图片中显示的结果。

Screeshot of the output

这里的问题是如何将每个按钮与另一个按钮稍微放置一点。

如果我要更改btnTag.setText以更改按钮本身的文本位置。

我实际上想要更改按钮位置。

我知道它与row.setLayoutParams有关。

  1. 有谁熟悉这个?

  2. 编译器大声说不赞成使用FILL_PARENT替换它的任何想法。

  3. 由于 伊兰

1 个答案:

答案 0 :(得分:1)

您应该阅读有关addView method的更多信息 对于你的情况:
1.在按钮之间留出更多空间:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// margin with other button here
params.leftMargin = 10;
params.rightMargin = 10;
btnTag.setLayoutParams(params);
btnTag.setText(String.valueOf (j + 1 + (i * 3)));
btnTag.setId(j + 1 + (i * 3));
  1. 对于更改按钮位置:让我们说你的布局是这样的:
    第1行:0 - 1 - 2
    第2行:3 - 4 - 5
    第3行:6 - 7 - 8
    并且您想要切换按钮1和按钮5的位置

    // get the buttons View btn1 = row1.getChildAt(1); View btn5 = row2.getChildAt(2); // remove buttons row1.removeView(btn1); row2.removeView(btn5); // add in new position row2.addView(btn1, 2); row1.addView(btn5, 1);

  2. 希望得到这个帮助。