4

TableRow layout_weight以编程方式设置时出现问题。以下代码是TableLayout膨胀的 intable_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 的末尾之间的空白空间的结果来包装它们的内容。我做错了什么?谢谢!!

4

1 回答 1

10

要使权重机制起作用,您需要使用适当LayoutParams的充气TableRow小部件。由于TableRow是 a的父级,TableLayout因此您需要使用TableLayout.LayoutParams

TableLayout.LayoutParams row_params = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f);
table_body.addView(row, row_params);
于 2012-11-14T07:15:18.703 回答