6

TableRowsの数が不明なTableLayoutを含むXMLレイアウトがあります...行の数は実行時に確立されますが、2つの列が必要であることがわかっています...これ :

    -TableLayout全体を2列に設定する方法はありますか?

-(実行時に)作成されたTableRowsにIDをプログラムで付与する方法はありますか?これはTableLayout内に配置されるため、後でソフトウェアの他の部分から参照できますか?

4

1 に答える 1

5

XMLパーツとLayoutInflaterを介してテーブル行を作成できます。あなたがあなたのtable_cell.xmlとしてこれを持っていたとしましょう:

<TextView android:id="@+id/text"
    android:text="woot" />

そしてこれをtable_row.xmlとして(TableRowで何か凝ったことをしているのでない限り、それを独自のXMLファイルに入れる必要はなく、代わりにプログラムで作成するだけです。結果は同じになります):

<TableRow />

TableLayout参照が「テーブル」と呼ばれていると仮定すると、次のようなことができます。

TableLayout table = (TableLayout)findViewById(R.id.table);
LayoutInflater inflater = getLayoutInflater();

for(int i = 0; i < 5; i++) {
    TableRow row = (TableRow)inflater.inflate(R.layout.table_row, table, false);
    View v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);
    v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);

    // you can store your reference to `row` here for later use
    table.addView(row);
}

この手法を使用すると、XMLでレイアウトを設定できるため、読み取り/整理/編集が容易になり、テーブル内の列と行の数をプログラムで制御できます。後で使用するために、各テーブル行への参照を保存することもできます。

于 2010-04-28T16:29:34.367 に答える