我想知道是否有一种方法可以在预定义的线性布局中动态创建带有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”作为输出,即第一个实例。
非常感谢任何帮助
答案 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具有相同的权重,因此所有视图都将显示在屏幕上。