在编程生成的元素上按父对齐

时间:2014-10-12 01:29:32

标签: java android xml android-edittext textview

所以我在循环中以编程方式创建标题和输入字段。正如下面的代码所示,所有元素都出现在一起:

    RelativeLayout mRlayout = (RelativeLayout) findViewById(R.id.checkFieldsLayout);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    Bundle extras = getIntent().getExtras();
    List<String> fields = extras.getStringArrayList("checkList");

    for (int i = 0; i < fields.size(); i++) {
        TextView header = new TextView(this); // Pass it an Activity or Context
        header.setText(fields.get(i).toString());
        header.setLayoutParams(params);
        EditText field = new EditText(this);
        field.setLayoutParams(params);
        mRlayout.addView(header);
        mRlayout.addView(field);
    }   

如何以编程方式布置这些元素,使它们与屏幕的宽度相匹配,并将其中一个停靠在另一个之下?谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

RelativeLayout mRlayout = (RelativeLayout) findViewById(R.id.checkFieldsLayout);
Bundle extras = getIntent().getExtras();
List<String> fields = extras.getStringArrayList("checkList");

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
     RelativeLayout.LayoutParams.MATCH_PARENT,
     RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 


TextView header1 = new TextView(this); // Pass it an Activity or Context
header.setText(fields.get(0).toString());
header.setLayoutParams(params);
header1.setId(0);

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

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

mRlayout.addView(header);
mRlayout.addView(field);

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

    TextView header = new TextView(this); // Pass it an Activity or Context
    header.setText(fields.get(i).toString());
    header.setId(i);
    header.setLayoutParams(params1);

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

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

    mRlayout.addView(header);
    mRlayout.addView(field);
}