Создание линейного макета с TextViews с использованием цикла for - PullRequest
0 голосов
/ 02 января 2011

Мне было интересно, есть ли способ динамически создать дополнительный линейный макет с текстовым представлением в предопределенном макете лайнера. Это мой код, поэтому вы понимаете, о чем я спрашиваю:

LinearLayout MainLL= (LinearLayout) findViewById(R.id.myLayoutId); 

  for(int i=0; i<5; i++)
  {
   LinearLayout childLL= new LinearLayout(this);
   childLL.setOrientation(LinearLayout.VERTICAL);  
   childLL.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
   childLL.setGravity(Gravity.LEFT);

 TextView text = new TextView(this);
   text.setText("The Value of i is :"i);
   text.setTextSize(12);  
   text.setGravity(Gravity.LEFT);
   text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
childLL.addView(text);
MainLL.addView(childLL);
}

Моя проблема в том, что я получаю только "Значение i: 0" в качестве выходных данных, то есть первый экземпляр.

Любая помощь будет высоко ценится

Ответы [ 3 ]

4 голосов
/ 02 января 2011

Вам не нужно оборачивать TextView внутри другого LinearLayout, вы можете просто сделать:

LinearLayout MainLL= (LinearLayout) findViewById(R.id.myLayoutId); 
  for(int i=0; i<5; i++){
 TextView text = new TextView(this);
   text.setText("The Value of i is :"+i); // <-- does it really compile without the + sign?
   text.setTextSize(12);  
   text.setGravity(Gravity.LEFT);
   text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
MainLL.addView(text);
}
0 голосов
/ 02 января 2011

Да, если вам очень нужно обернуть еще один LinearLayout перед переносом TextView. Пожалуйста, попробуйте этот код:

childLL.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));  

Это обеспечит одинаковый вес обернутого LinearLayout, поэтому все виды будут отображаться на экране.

0 голосов
/ 02 января 2011

Все, что вы делаете, правильно, просто сделайте это

childLL.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  

, потому что ваш родительский макет заполнен 1-м представлением, из-за чего вы не можете видеть другое представление.

и yes

 text.setText("The Value of i is :"+i); //add + sign
...