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

黃燕斌發表於2019-03-04

年前寫了幾篇部落格,SmartTable受到很多同學的star。同時也提出一些問題,在公司兼著做後臺開發,我上班時間緊張,一直沒有時間去更新。最近離職了,終於有時間更新一下新的功能,今天花了一天時間把表單功能弄了弄,有需要的同學可以看下。

在這裡打個小廣告,本人最近離職了。
想去外地發展,有同學身邊有合適的工作可以聯絡我,不甚感謝!QQ:873825232

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

github地址

附上之前三篇的地址:

好用漂亮的Android 表格框架

好用漂亮的Android 表格框架2

好用漂亮的Android 表格框架3

表單功能

這個功能標題有點坑,先看圖說話。

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

這個需求是交流群一個同學提出來的,當時沒當回事,但是想想,如果能只設定一些引數就可以自動生成這種表單表格感覺好牛叉的。生成程式碼一定要簡單。最終效果圖:

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

首先要實現一個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接收然後程式碼設定進去。字型和背景,格子大小,縮放,移動等和原有功能都相容。

好用漂亮的Android 表格框架4(自動生成表單)
網格格式化

之前支援設定內容和序號網格樣式,但是需求總是奇葩的。群裡說哪根線可以去掉嗎?我類個去。沒辦法,增加了網格格式化支援,這樣你想哪根線顯示就可以哪根線顯示,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;
            }
        });
複製程式碼

下面是選座裡面中間那條線,看見沒?

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

哈哈,肯定沒看見,放大再看

好用漂亮的Android 表格框架4(自動生成表單)
其他
  • 增加設定列的寬度;
  • 增加序號樣式格式化;
  • 優化背景;
    • 修復N個bug;
  • 等等。。。

相關文章