使用for循环使用TextViews创建线性布局

时间:2011-01-02 02:43:46

标签: java android textview android-linearlayout

我想知道是否有一种方法可以在预定义的线性布局中动态创建带有textview的附加线性布局。这是我的代码,所以你得到了我所要求的要点:

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

我的问题是我只得到“我的价值是:0”作为输出,即第一个实例。

非常感谢任何帮助

3 个答案:

答案 0 :(得分:4)

您不需要将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);
}

答案 1 :(得分:0)

你正在做的一切都是正确的,只需要它

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

因为您的父布局由第一个视图填充,因此您无法看到其他视图。

和是

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

答案 2 :(得分:0)

是的,如果你需要在包装TextView之前包装另一个LinearLayout。 请尝试以下代码:

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

这将确保包装的LinearLayout具有相同的权重,因此所有视图都将显示在屏幕上。