好用漂亮的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;
  • 等等。。。
相關文章
相關標籤/搜索