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

use*_*805 4 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>
Run Code Online (Sandbox Code Playgroud)

我想在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++;
}
Run Code Online (Sandbox Code Playgroud)

body_row.xml有这段代码:

<TableRow>
    <TextView 
        android:text="row1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</TableRow>
Run Code Online (Sandbox Code Playgroud)

这个代码TableLayout没有划分为10个相等的空格(正如我想要的那样),但是行只用最后一行结尾和TableLayout结尾之间的空格结果包装它们的内容.我做错了什么?谢谢!!

Luk*_*rog 10

要使重量机制起作用,您需要使用适合LayoutParams您的充气TableRow小部件.由于母公司TableRowTableLayout,那么你需要使用TableLayout.LayoutParams:

TableLayout.LayoutParams row_params = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f);
table_body.addView(row, row_params);
Run Code Online (Sandbox Code Playgroud)