,但我需要能夠動態地添加行爲的名額增加。
這並不難,當你有一個新的對象追加TableRow
的數據到TableLayout
。
我對xml中固定的硬編碼數量的數據有所瞭解,但如果對象數量來自Activity.java文件,最佳方式是什麼?
我不認爲有一個最佳的方式(或你認爲最好的方式)。您可以:
- 插入假視圖以充當分隔符。這將更容易實現,但它也會增加應用程序的內存消耗,如果行數很大,則會帶來不好的後果。 (1)
- 或者使用可繪製的背景來模擬邊界(如九塊圖像)。這會更簡單,然後插入額外的視圖,但你需要更多的才能,使其看起來不錯。(2)
爲圖像的一些例子:
(1)
private static final int DIVIDER_SIZE = 2;
// rowsCount the number of rows to add to the TableLayout
private void buildOldSchool(TableLayout table, int rowsCount) {
View divider;
for (int i = 0; i < rowsCount; i++) {
TableRow row = new TableRow(this);
for (int j = 0; j < 7; j++) {
if (j % 2 == 0) {
divider = new View(this);
divider.setLayoutParams(new TableLayout.LayoutParams(
DIVIDER_SIZE, TableLayout.LayoutParams.MATCH_PARENT));
divider.setBackgroundColor(Color.GREEN);
row.addView(divider, new TableRow.LayoutParams(
DIVIDER_SIZE, TableRow.LayoutParams.MATCH_PARENT));
continue;
}
TextView tv = new TextView(this);
tv.setText("DX"); // dummy data
row.addView(tv, new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
}
divider = new View(this);
divider.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, DIVIDER_SIZE));
divider.setBackgroundColor(Color.GREEN);
if (i == 0) {
table.addView(divider);
divider = new View(this);
divider.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, DIVIDER_SIZE));
divider.setBackgroundColor(Color.GREEN);
}
table.addView(row);
table.addView(divider);
}
}
(2)或與圖像:
private void buildWithDrawables(TableLayout table, int rowsCount) {
for (int i = 0; i < rowsCount; i++) {
TableRow row = new TableRow(this);
row.setBackgroundResource(i == 0 ? R.drawable.firstrow
: R.drawable.normalrow);
for (int j = 0; j < 3; j++) {
TextView tv = new TextView(this);
tv.setBackgroundResource(j == 2 ? R.drawable.extra
: R.drawable.cell);
tv.setText("DX");
row.addView(tv, new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
}
table.addView(row);
}
}
在哪裏圖像是:
忽略我的設計技巧。
如果你預見了大量的行,我會建議你使用ListView
,你可以很容易地使它看起來像一張帶有邊框的表格。
這實際上正是我所決定的。我創建了一個可繪製的xml使用。 – yams 2013-03-18 22:24:33
順便謝謝。 – yams 2013-03-19 14:12:20