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

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

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

github地址数组

附上以前三篇的地址:bash

好用漂亮的Android 表格框架框架

好用漂亮的Android 表格框架2ide

好用漂亮的Android 表格框架3post

表单功能

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

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

首先要实现一个IForm接口ui

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;
  • 等等。。。
相关文章
相关标签/搜索