Android:layout_weight在以编程方式设置时无法正常工作

时间:2012-11-12 13:29:57

标签: android android-layout

我以编程方式设置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结尾之间的空格结果包装起来。我做错了什么? 谢谢!!

1 个答案:

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