2015-11-15 2 views
0

Я пытаюсь создать 5 кнопок ниже друг друга, но они появляются друг на другаaddRule (RelativeLayout.BELOW, идентификатор) не работает

ArrayList<Button> btn = new ArrayList<>(); 
for (int i=0; i<10; i++) { 
     Log.d("TEST", Integer.toString(i)); 

     btn.add(new Button(this)); 
     btn.get(i).setText(Integer.toString(i)); 
     if (i == 0) { 

      btn.get(i).setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); 
     } else { 
      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
      lp.addRule(RelativeLayout.BELOW, btn.get(i-1).getId()); 
      btn.get(i).setLayoutParams(lp); 
     } 
     ll.addView(btn.get(i)); 

Что такое случилось с моим кодом?

ответ

0

Решено путем добавления btn.get (i) .setId (View.generateViewId()). Все идентификаторы кнопок были -1 перед использованием setId().

0

Как вы назвали свой макет, «ll», кажется, вы добавляете эти кнопки в LinearLayout. Если это так, попробуйте изменить этот макет контейнера на RelativeLayout.

Смежные вопросы