以编程方式将给定数量的编辑文本定位为 Android 框

问题描述 投票:0回答:1

我需要放置多个显示为框的 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 个编辑框。之后,我需要获取输入到字符串数组中的值。

预期产出

android-edittext
1个回答
0
投票

您已将所有元素添加到 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);
© www.soinside.com 2019 - 2024. All rights reserved.