我正在准备按类别显示的国家/地区列表的布局。格式化布局时遇到问题。我希望类别标题(较大的标题)为“100%宽度”,到目前为止它们是WRAP_CONTENT格式(蓝色用于测试目的):
我使用了以下代码:
TableLayout table = new TableLayout(this);
table.setPadding(24, 14, 24, 24);
table.setStretchAllColumns(true);
table.setShrinkAllColumns(true);
// ...
TableRow titleRow = new TableRow(this);
titleRow.setGravity(Gravity.CENTER_HORIZONTAL);
titleRow.setPadding(0, 18, 0, 8);
titleRow.setBackgroundColor(Color.BLUE);
TextView title = new TextView(this);
title.setText("TEST TITLE"); //title.setText(currentContinent);
title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
title.setGravity(Gravity.CENTER);
title.setBackgroundColor(Color.DKGRAY);
title.setPadding(0, 6, 0, 8);
titleRow.addView(title);
table.addView(titleRow, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
我更改了代码的最后一部分以使TextView填充父级(TableRow):
titleRow.addView(title, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
table.addView(titleRow, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
然后我的TextView消失了!
Debug view http://www.wysyper.pl/u/4417tahfcvnb.jpeg
可能导致问题的原因是什么?
答案 0 :(得分:0)
我相信你有充分的理由不为此使用XML布局,这会使你的生活减少代码填充并消除一些潜在的错误。
您是否使用适当的LayoutParams
子类的实例为您的父视图尝试过?添加到TableLayout
的每个视图都应使用TableLayout.LayoutParams
的实例。同样,TableRow
需要TableRow.LayoutParams
。
如果这不能解决问题,我建议用XML而不是代码构建布局。