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>

.. に10 行のみを表示したいのですが、これを行うには、次のコードを使用してプログラムで要素をTableLayout追加します。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はthenなので、 :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 に答える