年前写了几篇博客,SmartTable受到很多同学的star。同时也提出一些问题,在公司兼着做后台开发,我上班时间紧张,一直没有时间去更新。最近离职了,终于有时间更新一下新的功能,今天花了一天时间把表单功能弄了弄,有需要的同学可以看下。
在这里打个小广告,本人最近离职了。 想去外地发展,有同学身边有合适的工作可以联系我,不甚感谢!QQ:873825232
附上之前三篇的地址:
表单功能
这个功能标题有点坑,先看图说话。
这个需求是交流群一个同学提出来的,当时没当回事,但是想想,如果能只设置一些参数就可以自动生成这种表单表格感觉好牛叉的。生成代码一定要简单。最终效果图:
首先要实现一个
IForm
接口
public interface IForm {
//宽占比
int getSpanWidthSize();
//高占比
int getSpanHeightSize();
//字体对齐
Paint.Align getAlign();
}
复制代码
然后就是构造二维数组,超级简单,
Form
是demo
里面对IForm
的实现类。
table = (SmartTable<Form>) findViewById(R.id.table);
Form[][] forms = {
{
new Form("姓名", Paint.Align.LEFT),new Form(),
new Form("性别", Paint.Align.LEFT), new Form(),
new Form("出生日期", Paint.Align.LEFT),new Form(),
new Form("民族", Paint.Align.LEFT), new Form(),
new Form("婚否", Paint.Align.LEFT),new Form(),
new Form(1, 4, "照片")
},
...//这里省略相同代码
{
new Form(11, 1, "本人保证以下资料全部属实,否则本人愿意承担由此造成的一切后果")
},
{
new Form(2, 1, "申请人签名"), new Form(4, 1, "")
, new Form(2, 1, "日期"), new Form(3, 1, "")
}
};
final FormTableData<Form> tableData = FormTableData.create(table, "登记表", 11, forms);
//将表单数据设置到表格View中去
table.setTableData(tableData);
复制代码
只要这样就生成了一张表单,合并单元格,高宽都会自动计算,当然如果你需要进行者输入内容,可以通过
EditText
接收然后代码设置进去。字体和背景,格子大小,缩放,移动等和原有功能都兼容。
网格格式化
之前支持设置内容和序号网格样式,但是需求总是奇葩的。群里说哪根线可以去掉吗?我类个去。没办法,增加了网格格式化支持,这样你想哪根线显示就可以哪根线显示,
CellInfo
对象里面返回了格子的数据,这样也可以根据数据来判断是否绘制。
table.getConfig().setTableGridFormat(new BaseGridFormat(){
@Override
protected boolean isShowHorizontalLine(int col, int row, CellInfo cellInfo) {
return true;
}
@Override
protected boolean isShowVerticalLine(int col, int row, CellInfo cellInfo) {
return true;
}
});
复制代码
下面是选座里面中间那条线,看见没?
哈哈,肯定没看见,放大再看
其他
- 增加设置列的宽度;
- 增加序号样式格式化;
- 优化背景;
-
- 修复N个bug;
- 等等。。。