我正在开发计算器。
我从这里拿了一些示例代码。
我的第一个挑战是如何在循环中创建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);
}
图片中显示的结果。
这里的问题是如何将每个按钮与另一个按钮稍微放置一点。
如果我要更改btnTag.setText以更改按钮本身的文本位置。
我实际上想要更改按钮位置。
我知道它与row.setLayoutParams有关。
有谁熟悉这个?
编译器大声说不赞成使用FILL_PARENT替换它的任何想法。
由于 伊兰
答案 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行: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);
希望得到这个帮助。