我以编程方式设置TableRow
layout_weight
时遇到问题。
以下代码是在TableLayout
元素中table_body
充气:
<TableLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:weightSum="1">
<TableLayout>
我想在TableLayout
中只显示10行..为此我添加TableRow
元素以编程方式使用此代码:
while(i<10){
TableRow row = (TableRow) ((Activity) context).getLayoutInflater().
inflate(R.layout.body_row, table_body, false);
TableRow.LayoutParams row_params =
new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f);
table_body.addView(row, row_params);
i++;
}
body_row.xml包含以下代码:
<TableRow>
<TextView
android:text="row1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</TableRow>
使用此代码TableLayout
不会划分为10个相等的空格(正如我所希望的那样),但行只会将其内容与最后一行末尾和TableLayout结尾之间的空格结果包装起来。我做错了什么?
谢谢!!
答案 0 :(得分:9)
要使权重机制正常工作,您需要为充气的LayoutParams
小部件使用正确的TableRow
。由于TableRow
的父级是TableLayout
,您需要使用TableLayout.LayoutParams
:
TableLayout.LayoutParams row_params = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f);
table_body.addView(row, row_params);