我需要放置多个显示为框的 EditText(每行 5 个)。这是到目前为止的代码和我所实现的屏幕截图。有人可以帮忙吗?
EditText[] et = new EditText[count];
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout layout = (LinearLayout) findViewById(R.id.dynamicsletters);
for (int i = 0; i < count; i++) {
et[i] = new EditText(this);
et[i].setLayoutParams(new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f
));
//et[i].setPadding(10,0,0,0);
et[i].setGravity(Gravity.CENTER_VERTICAL);
et[i].setHint("Pos"+(i+1));
//et[i].setWidth(40);//.layout(100,0,0,0);
et[i].setBackgroundResource(R.drawable.rectangleborder);
linearLayout.addView(et[i]);
}
layout.addView(linearLayout);
最大数量为 15 个编辑框。之后,我需要获取输入到字符串数组中的值。
您已将所有元素添加到 1 行。 要每行添加 5 个,您需要为每行创建新的 LinearLayout。
private void addEditText(LinearLayout parent, int count, int maxItemInRow) {
EditText[] et = new EditText[count];
LinearLayout oneRowLayout = null;
for (int i = 0; i <count; i++) {
if(i%maxItemInRow == 0){
oneRowLayout = new LinearLayout(this);
oneRowLayout.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
oneRowLayout.setOrientation(LinearLayout.HORIZONTAL);
oneRowLayout.setWeightSum(maxItemInRow);
parent.addView(oneRowLayout);
}
et[i] = new EditText(this);
et[i].setLayoutParams(new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f
));
//et[i].setPadding(10,0,0,0);
et[i].setGravity(Gravity.CENTER_VERTICAL);
et[i].setHint("Pos"+(i+1));
//et[i].setWidth(40);//.layout(100,0,0,0);
et[i].setBackgroundResource(R.drawable.rectangleborder);
oneRowLayout.addView(et[i]);
}
}
使用:
LinearLayout rootView = findViewById(R.id.root_view);
int count = 15;
int maxItemInRow = 5;
addEditText(rootView,count,maxItemInRow);