0
상대 레이아웃을위한 요소를 프로그래밍 방식으로 생성합니다. 매번 다른 수의 요소를 제공합니다. 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);
}
}
각 요소가 이전 요소 아래에 나타나도록 레이아웃 매개 변수를 올바르게 설정하는 방법을 알아낼 수 있습니까?
복잡하지 않을 수 있습니다. 레이아웃 규칙이 두 가지 빠져 있다고 확신합니다. –