Android:以编程方式使用百分比设置子视图的宽度

时间:2011-09-21 13:37:56

标签: android android-layout android-linearlayout

我读过这篇文章:

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做,那么它显示完美。请帮助我解决我在做错的问题?

由于

1 个答案:

答案 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));