黑暗模式
Grid 控件用法
在很长一段时间内,grid 都只是起到语义上的作用,在功能上和 view 没有不同。最近我们对它做了以下改成,在不少地方可以提高开发效率。
- 可以指定不同列的宽度。这个在默认子控件布局中是没法实现的。
- 可以绘制网格线。按传统方法去做,虽然不是不可能,也是非常麻烦的。
- 奇偶行可以指定不同的背景颜色。按传统方法去做,也是非常麻烦的。
有了上述这些特性,我们就可以非常方便的实现表格效果。
由于 grid 本身不具有滚动效果,不适合显示大量数据。
1. 用法
1.1 指定行数
通过属性 rows 指定行数。
1.2 指定各列的参数
通过属性 columns_definition 指定各列的参数
c
/**
* @property {char*} columns_definition
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
* 各列的参数。
* 各列的参数之间用英文的分号 (;) 分隔,每列参数的格式为:
*
* col(w=?,left_margin=?,right_margin=?,top_maorgin=?,bottom_margin=?)
*
* * w 为列的宽度(必须存在)。取值在 (0-1] 区间时,视为 grid 控件宽度的比例,否则为像素宽度。
* * left_margin(可选,可缩写为 l) 该列左边的边距。
* * right_margin(可选,可缩写为 r) 该列右边的边距。
* * top_margin(可选,可缩写为 t) 该列顶部的边距。
* * bottom_margin(可选,可缩写为 b) 该列底部的边距。
* * margin(可选,可缩写为 m) 同时指定上面 4 个边距。
* * fill_available(可选,可缩写为f) 填充剩余宽度(只有一列可以指定)。
*
*/
char* columns_definition;
1.3 显示网格
- 属性 show_grid 设置为 true。
- 在 style 中指定 grid_color 的颜色
- 在 style 中指定 border_color 的颜色
1.4 奇偶行不同背景颜色
- 在 style 中通过 even_bg_color 指定偶数行的背景颜色
- 在 style 中通过 odd_bg_color 指定奇数行的背景颜色
1.5 完整示例
xml
<window>
<grid x="10" y="10" w="-20" h="30" columns_definition="col(w=0.4,m=5);col(w=0.3,m=5);col(w=0.3,m=5);" rows="1"
style.normal.grid_color="gray" style.normal.border_color="black" show_grid="true"
style.normal.bg_color="#a0a0a0">
<label text="姓名" />
<label text="语文" />
<label text="数学" />
</grid>
<grid x="10" y="40" w="-20" h="180" columns_definition="col(w=0.4,m=5);col(w=0.3,m=5);col(w=0.3,m=5);" rows="5"
style.normal.grid_color="gray" style.normal.border_color="black"
style.normal.odd_bg_color="#f5f5f5" style.normal.even_bg_color="#eeeeee" show_grid="true">
<label text="张三" />
<label text="98" />
<label text="97" />
<label text="李四" />
<label text="98" />
<label text="97" />
<label text="王五" />
<label text="98" />
<label text="97" />
<label text="孙六" />
<label text="98" />
<label text="97" />
<label text="赵七" />
<label text="98" />
<label text="97" />
</grid>
</window>