動的に作成されたウィジェット/ビューの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 を持つことができます。
私の仮定は有効ですか、それともイオンからサンプを作ったのでしょうか?