有一种需求,现在的UI编辑器无法满足,例如:
在线性横向的布局下,有4个子控件A,B,C,D。 其中A,D宽度固定,B,C的宽度随着父控件的宽度而改变。B,C的宽度是无法设定为百分比的,因为百分比值也不固定。
我现在的做法类似wxPython的BoxSizer,可以为每一个子控件指定一个值proportion(>=0),用以决定该控件的大小(仅仅在线性布局的方向上)。
proportion=0表示该控件大小固定,proportion>0 表示该控件占用父控件的“活动空间“的比例。”活动空间“指除去固定大小的控件(proportion==0)以外的所有空间。
例如,父控件宽度 100,
A: width=10, proportion=0
B: width=20, proportion=1
C: width=20,proportion=2
D: width=30,proportion=0
最终结果是:
A=10, D=30,因为它们都是固定宽度
活动空间= 100-(A+D) = 60
总proportion = 1+2 = 3
B = 60 * 1 / 3 = 20
C = 60 * 2 / 3 = 40
上例中,B,C的宽度没有起到作用。
更进一步,可以将B,C的宽度作为其”最小宽度“,以免控件被压缩得太小而影响效果。(这个需求不太强烈,且稍微复杂一些,并且最小宽度,proportion和父控件宽度可能无法同时满足)
目前,因为编辑器不支持该功能,所以我只能用tag来表示proportion。
希望能加入类似的功能,应该有很多同学需要。