年前寫了幾篇部落格,SmartTable受到很多同學的star。同時也提出一些問題,在公司兼著做後臺開發,我上班時間緊張,一直沒有時間去更新。最近離職了,終於有時間更新一下新的功能,今天花了一天時間把表單功能弄了弄,有需要的同學可以看下。
在這裡打個小廣告,本人最近離職了。 想去外地發展,有同學身邊有合適的工作可以聯絡我,不甚感謝!QQ:873825232
附上之前三篇的地址:
表單功能
這個功能標題有點坑,先看圖說話。
這個需求是交流群一個同學提出來的,當時沒當回事,但是想想,如果能只設定一些引數就可以自動生成這種表單表格感覺好牛叉的。生成程式碼一定要簡單。最終效果圖:
首先要實現一個
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;
- 等等。。。