Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态生成的android布局中的元素重叠_Java_Android_Android Relativelayout - Fatal编程技术网

Java 动态生成的android布局中的元素重叠

Java 动态生成的android布局中的元素重叠,java,android,android-relativelayout,Java,Android,Android Relativelayout,我以编程的方式为相对布局生成元素,每次为不同数量的元素提供服务。我可以使TextView和EditText元素正确地显示在彼此的下方,而不会重叠,但第二次添加复选框和按钮时,一切都变得一团糟。这是我的代码: RelativeLayout mRlayout = (RelativeLayout) findViewById(R.id.checkFieldsLayout); for (int i = 1; i < fields.size(); i++) { RelativeLayout.

我以编程的方式为相对布局生成元素,每次为不同数量的元素提供服务。我可以使TextView和EditText元素正确地显示在彼此的下方,而不会重叠,但第二次添加复选框和按钮时,一切都变得一团糟。这是我的代码:

RelativeLayout mRlayout = (RelativeLayout) findViewById(R.id.checkFieldsLayout);

for (int i = 1; i < fields.size(); i++) {
    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
             RelativeLayout.LayoutParams.MATCH_PARENT,
             RelativeLayout.LayoutParams.WRAP_CONTENT);
        params1.addRule(RelativeLayout.BELOW,fields.size()+i -1);

    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    params2.addRule(RelativeLayout.BELOW, i);

    String thisHeader = fields.get(i).replace("_", " ").toString();

    if (thisHeader.contains("chkbox")) {
        CheckBox chkbox = new CheckBox(this);
        chkbox.setId(i);
        chkbox.setText(thisHeader);
        chkbox.setLayoutParams(params1);
        mRlayout.addView(chkbox);

        if (thisHeader.contains("chkboximg")) {
            Button upload_btn = new Button(this);
            upload_btn.setId(i);
            upload_btn.setLayoutParams(params1);
            upload_btn.setText("Select Image");
            upload_btn.setOnClickListener(this);
            mRlayout.addView(upload_btn);
        }

    } else {
        TextView header = new TextView(this);
        header.setText(StringUtils.capitalize(thisHeader));
        header.setId(i);
        header.setLayoutParams(params1);

        EditText field = new EditText(this);
        field.setLayoutParams(params2);
        field.setId(fields.size() + i);

        mRlayout.addView(header);
        mRlayout.addView(field);
    }
}
RelativeLayout mRlayout=(RelativeLayout)findViewById(R.id.checkFieldsLayout);
对于(int i=1;i

有人知道如何正确设置布局参数,使每个元素都显示在前一个元素的下面吗?

您最好在XML中定义要添加的视图并在此处展开它们,而不是在代码中玩弄布局参数。您可以通过将可见性设置为“可见”或“消失”来打开和关闭零件。

不会那么复杂,我很确定我缺少一些布局规则。