2011-08-09 32 views
1

我对的onCreate代码(),这是一个选项卡内的活动:到活动添加视图编程

String[] info = getResources().getStringArray(R.array.fc_1); 
TextView q = new TextView(this); 
q.setText(info[0]); 

TextView a1 = new TextView(this); 
a1.setText(info[1]); 

TextView a2 = new TextView(this); 
a2.setText(info[2]); 

TextView a3 = new TextView(this); 
a3.setText(info[3]); 

LinearLayout linlay = new LinearLayout(this); 
linlay.addView(q); 
linlay.addView(a1); 
linlay.addView(a2); 
linlay.addView(a3); 
setContentView(linlay); 

会发生什么情况是,只有第一的TextView被所示,用正确的值info [0],但其他textview只是不存在。

任何想法,我可能做错了什么? 谢谢

回答

1

LinearLayout的默认方向是水平的。所以其他TextView在第一个占据所有空间的右侧。将LinearLayout的方向更改为垂直。

+0

sazpaz需要确保他设置了他的LayoutParams,也是如此。用XML定义一种风格并将其应用于所有他正在膨胀的视图可能是有用的,而不是以编程方式设置所有内容。 – Codeman

+0

是的,我自己发现了这一点,谢谢。 – leonsas

0

LinearLayout的标准高度和宽度是fill_parent。这使得你的第一个textView使用隐藏其余视图的所有空间(将它们放在屏幕之外)。

您可以将linlay的方向更改为垂直,也可以更改不同文字浏览的宽度。你需要玩LinearLayout.LayoutParams来达到这个目的。

0
String[] info = getResources().getStringArray(R.array.fc_1); 

TextView q = new TextView(this); 
q.setText(info[0]); 
TextView a1 = new TextView(this); 
a1.setText(info[1]); 

TextView a2 = new TextView(this); 
a2.setText(info[2]); 

TextView a3 = new TextView(this); 
a3.setText(info[3]); 

LinearLayout linlay = new LinearLayout(this); 
linlay.setOrientation(1);//set vertical orientation 
linlay.addView(q); 
linlay.addView(a1); 
linlay.addView(a2); 
linlay.addView(a3); 
setContentView(linlay); 

试试这个代码块