好用漂亮的Android 表格框架4(自动生成表单)

年前写了几篇博客,SmartTable受到很多同学的star。同时也提出一些问题,在公司兼着做后台开发,我上班时间紧张,一直没有时间去更新。最近离职了,终于有时间更新一下新的功能,今天花了一天时间把表单功能弄了弄,有需要的同学可以看下。

在这里打个小广告,本人最近离职了。 想去外地发展,有同学身边有合适的工作可以联系我,不甚感谢!QQ:873825232

github地址

附上之前三篇的地址:

好用漂亮的Android 表格框架

好用漂亮的Android 表格框架2

好用漂亮的Android 表格框架3

表单功能

这个功能标题有点坑,先看图说话。

这个需求是交流群一个同学提出来的,当时没当回事,但是想想,如果能只设置一些参数就可以自动生成这种表单表格感觉好牛叉的。生成代码一定要简单。最终效果图:

首先要实现一个IForm接口


public interface IForm {
    //宽占比
    int getSpanWidthSize();
    //高占比
    int getSpanHeightSize();
    //字体对齐
    Paint.Align getAlign();

}

复制代码

然后就是构造二维数组,超级简单,Formdemo里面对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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值