2013-11-15 2 views
1

Я создаю произвольное количество текстовых элементов, содержащихся в RelativeLayout. Как разместить текстовые окна ниже или рядом друг с другом программно?Программный набор layout_toLeftOf и layout_below для TextView

Я предполагаю, что я должен использовать * layout_toLeftOf * и * layout_below *, но как?

Я знаю, что могу использовать RelativeLayout.LayoutParams, но это только позиционирует макет, а не отдельные текстовые элементы.

Покушение до сих пор:

public void updateTS (ArrayList<String> arrayList) { 
    RelativeLayout rl = (RelativeLayout) mView.findViewById (R.id.overview); 
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    for (int i = 0; i < arrayList.size(); i++) { 
     TextView tv = new TextView (getActivity()); 
     tv.setId (i); 
     tv.setText (arrayList.get (i).toString()); 

     if (i > 0) { 
      lp.addRule (RelativeLayout.BELOW, i - 1); 
     } 

     rl.addView (tv); 
    } 

} 

ответ

4

Вы должны установить новый RelativeLayout.LayoutParams на TextView, не RelativeLayout:

public void updateTS (ArrayList<String> arrayList) { 
    RelativeLayout rl = (RelativeLayout) mView.findViewById (R.id.overview); 

    for (int i = 0; i < arrayList.size(); i++) { 
     TextView tv = new TextView (getActivity()); 
     tv.setId (i); 
     tv.setText (arrayList.get (i).toString()); 

     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

     if (i > 0) { 
      lp.addRule (RelativeLayout.BELOW, i - 1); 
     } 

     tv.setLayoutParams(lp); 
     rl.addView (tv); 
    } 

} 
+0

К сожалению, не после. Размышление о раздумьях? – abc32112

+0

Я обновил ответ с большим количеством кода. – WonderCsabo

+0

Спасибо! Ничего себе, документация * не * легко следовать. – abc32112

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