2014-10-22 3 views
0

Я создаю элементы для относительной компоновки программным образом, каждый раз подготавливая разные элементы. Я могу сделать элементы TextView и EditText правильными, ниже друг друга без перекрытия, но второй я добавил флажки и кнопки, все стало беспорядком. Это мой код:Элементы, перекрывающиеся динамически генерируемым макетом Android.

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); 
    } 
} 

Может кто-нибудь выяснить, как настроить параметры макета правильно, так что каждый из элементов отображается под предыдущим элементом?

ответ

0

Возможно, вам лучше определить вид, который вы добавляете в XML, и раздувать их здесь, а не играть с параметрами макета в коде. Вы можете включить и отключить детали, установив видимость на «Видимый» или «Унесенный».

+0

Это не может быть так сложно, я уверен, что это пара правил компоновки, которые мне не хватает. –