0

動的に作成されたウィジェット/ビューの1..N行で満たされたスクロール領域の下に「固定行」が必要です。これがうまくいくことを望んでいるものです(pseudo-xml):

<LinearLayout llv (vertical)>

    <TableLayout tlFixedRow > <-- child of llv, sibling of sv
        <TableRow 
            <TextView "Blee"/>
            <TextView "Bla"/>
            <TextView "Bloo"/>
            <TextView "Bligh"/>
        <TableRow /> 
    </TableLayout>

    <ScrollView sv > <-- child of llv, sibling of tlFixedRow
        <TableLayout tlDynamicRowsParent >
            <TableRow /> <-- 0..N TableRows, added dynamically
        </ TableLayout >

    </ ScrollView sv>

</LinearLayout llv>

したがって、レイアウトファイルは次のとおりです。

<LinearLayout llv (vertical)>

    <TableLayout tlFixedRow > <-- child of llv
        <TableRow 
            <Checkbox/>
            <Checkbox/>
            <Checkbox/>
            <TextView "Bla"/>
        <TableRow /> 
    </TableLayout>

    <ScrollView sv > <-- child of llv, sibling of tlFixedRow
        <TableLayout tlDynamicRowsParent >

        </ TableLayout >

    </ ScrollView sv>    

</LinearLayout llv>

...そして、次の疑似コードで表される TableRows (最初の固定されたものの後) が動的に追加されます。

TableLayout tlDynamic = (TableLayout)findViewById(R.id.tlDynamicRowsParent);
...
for i = 0 until theCowsComeHome() do {
Checkbox ckbx1 = new Checkbox();
Checkbox ckbx1 = new Checkbox();
Checkbox ckbx1 = new Checkbox();
TextView txtView = new txtView();
// ... (set some of the Checkbox and textView properties)

TableRow tr = new TableRow();
tlDynamicRowsParent.addView(tr);
tr.addView(ckbx1);
tr.addView(ckbx2);
tr.addView(ckbx3);
tr.addView(txtView);
}

したがって、本当に、私の仮定は次のとおりです。

LinearLayout は 0..N の子を持つことができます。ScrollView は子を 1 つだけ持つことができます。TableLayout は 0..N の TableRows を持つことができます。

私の仮定は有効ですか、それともイオンからサンプを作ったのでしょうか?

4

1 に答える 1

1

はい、あなたが仮定したことはすべて正しいです。あなたは実際にそれをすべてコード化しています/ XMLが完了しているので、試してみることができます:)ただし、固定テーブルのXMLで同じ正確なコントロールがすでにマークアップされている場合、動的テーブルレイアウトに3つのチェックボックスとテキストビューを追加しています行。これが意図的なものかどうかはわかりません。

于 2012-03-13T14:14:04.213 に答える