yam*_*ams 7 android border tablelayout android-layout
我正在创建一个Android应用程序.此Android应用程序将具有动态对象.这些对象是具有地址或纬度/经度的位置,与当前位置的距离以及ETA.我想要做的是在TableLayout带边框的对象上添加对象,但我需要能够随着场所数量的增加动态添加行.
我对xml上的固定硬编码项目有一些了解,但是当对象数量来自Activity.java文件时,最好的方法是什么?
以下是TableLayout我想要的截图:

因此,对象将是一个具有地址,距离和方向的地方.
但我需要能够随着地方数量的增加动态添加行.
当你有一个新对象附加一个TableRow数据时,这并不困难TableLayout.
我对xml上的固定硬编码项目有一些了解,但是当对象数量来自Activity.java文件时,最好的方法是什么?
我认为没有最好的方法(或者你认为最好的方式).你要么:
您的图片的一些示例:
(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);
}
}
Run Code Online (Sandbox Code Playgroud)
(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);
}
}
Run Code Online (Sandbox Code Playgroud)
图像的位置是:
R.drawable.cell:

R.drawable.extra (视觉上透明的可绘制的,复制上面的九个补丁):

R.drawable.normalrow:

R.drawable.firstrow:

忽略我的设计技巧.
如果你预见到大量的行,我建议你使用一个ListView,你可以很容易地让它看起来像一个有边框的桌子.
| 归档时间: |
|
| 查看次数: |
8024 次 |
| 最近记录: |