年前写了几篇博客, SmartTable 受到很多同学的 star. 同时也提出一些问题, 在公司兼着做后台开发, 我上班时间紧张, 一直没有时间去更新. 最近离职了, 终于有时间更新一下新的功能, 今天花了一天时间把表单功能弄了弄, 有需要的同学可以看下.
在这里打个小广告, 本人最近离职了. 想去外地发展, 有同学身边有合适的工作可以联系我, 不甚感谢! QQ:873825232
github 地址 https://github.com/huangyanbin/smartTable .
附上之前三篇的地址:
好用漂亮的 Android 表格框架
好用漂亮的 Android 表格框架 2
好用漂亮的 Android 表格框架 3
表单功能
这个功能标题有点坑, 先看图说话.
这个需求是交流群一个同学提出来的, 当时没当回事, 但是想想, 如果能只设置一些参数就可以自动生成这种表单表格感觉好牛叉的. 生成代码一定要简单. 最终效果图:
首先要实现一个 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;
等等...
来源: https://juejin.im/post/5acc92915188255c637b49e7