2011-09-21 45 views
1

我读过这篇文章编程设置的儿童观宽度:安卓:用百分比

Setting width of Child View using Percentage

到目前为止,它的伟大工程,如果我们设置在XML重量和宽度,但我想以编程方式做到这一点。我在我的布局(XML)中有一个表格,我正在以编程方式向它添加行。在每一行中,我将添加2个文本视图。我试图做这样的:

TableLayout tl = (TableLayout)findViewById(R.id.myTable); 
for(int i = 0; i < nl.getLength(); i++){ 
      NamedNodeMap np = nl.item(i).getAttributes(); 
       TableRow trDetails = new TableRow(this); 
       trDetails.setBackgroundColor(Color.BLACK); 
       TextView tvInfo = new TextView(this); 
       tvInfo.setTextColor(Color.WHITE); 
       tvInfo.setGravity(Gravity.LEFT); 
       tvInfo.setPadding(3, 3, 3, 3); 
       tvInfo.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); 

       tvInfo.setText("info"); 

       TextView tvDetails = new TextView(this); 
       tvDetails.setTextColor(Color.WHITE); 
       tvDetails.setGravity(Gravity.LEFT); 
       tvDetails.setPadding(3, 3, 3, 3); 
       tvDetails.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); 
       tvDetails.setText(np.getNamedItem("d").getNodeValue()); 

       trDetails.addView(tvInfo, new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.50f)); 
       trDetails.addView(tvDetails, new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.50f)); 

       tl.addView(trDetails,new TableLayout.LayoutParams(
         LayoutParams.FILL_PARENT, 
         LayoutParams.WRAP_CONTENT)); 
} 

,但没有运气,它显示黑屏,但如果我在XML然后再去做它完美展现。请帮我解决这个问题,我做错了?

感谢

+0

添加一些代码.. – Ronnie

+0

没有为ü工作? – Ronnie

+0

是的,它的工作。谢谢 –

回答

7

您应该使用TableRow.LayoutParams而不是Linearlayout.LayoutParams

trDetails.addView(tvInfo, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.50)); 
trDetails.addView(tvDetails, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.50)); 
+0

对不起,我没有意识到你讨论过'TableRow.LayoutParams',我认为它是'TableLayout.LayoutParams'。我试着用TableRow.LayoutParams,它的工作。感谢很多:) –

+0

感谢但奇怪的是,我这样做'TableRow.LayoutParams rowParams = new TableRow.LayoutParams(0,android.widget.TableRow.LayoutParams.WRAP_CONTENT); \t \t rowParams.weight = 1; tvRank.setLayoutParams(rowParams);'但没有工作。而你的方式做到了。 –

+0

** setLayoutParams(ViewGroup.LayoutParams params)** '设置与此视图关联的布局参数。这些视图的父级提供参数,指定应如何安排。 ViewGroup.LayoutParams有许多子类,它们对应ViewGroup的不同子类,负责安排他们的孩子。 –