0%

TableLayout动态表格

一、效果图

使用shape图形做边框,表头使用覆盖(背景黑色,textview灰色,留margin),详细内容请查看源码(文章底部)

二、shape代码(边框)

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- 填充 -->
<solid android:color="#ffffff" /> <!-- 定义填充的颜色值 -->

<!-- 描边 -->
<stroke
android:width="0.5dp"
android:color="#000000" /> <!-- 定义描边的宽度和描边的颜色值 -->
</shape>

三、xml代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000"
android:stretchColumns="*"
>

<TableRow>

<TextView
android:layout_margin="0.5dp"
android:background="#dedcd2"
android:gravity="center"
android:text="路口"
android:width="1dp"
android:textSize="20sp"
android:textStyle="bold"/>

... ...

</TableRow>

<TableLayout
android:id="@+id/table1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000"
android:stretchColumns="*"/>

</TableLayout>

四、Java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private List<List> mList = new ArrayList<List>();
-------------------------------------------------------------------------------
private void showData() {

// 使用list临时存储数据,数据源在数据库中
mList.clear();

... ...

//清除表格所有行
mTable1.removeAllViews();
//全部列自动填充空白处
mTable1.setStretchAllColumns(true);
// 4列x行
for (int i = 0; i < x; i++) {
TableRow tableRow = new TableRow(SqliteTableActivity.this);
for (int j = 0; j < 4; j++) {
TextView tv = new TextView(SqliteTableActivity.this);
tv.setText(mList.get(i).get(j + 1) + "");
tv.setWidth(1);
// 设置背景
tv.setBackgroundResource(R.drawable.table_bg);
tv.setPadding(0, 5, 0, 5);
// 内容居中
tv.setGravity(Gravity.CENTER);
tableRow.addView(tv);
}
mTable1.addView(tableRow);
}

}

五、项目地址

https://github.com/sdwfqin/AndroidSamples