布局建议

尽量不要使用以下事件:松开右键、双击左键。原因是移动平台不支持或不推荐这些操作。

原则上不再支持使用水平滚动条,为此尽量不让出现水平滚动。实在避免不了,1)只让小幅滚动,2)界面让有较好提示,举个例子,要在一行显示10个按钮,而每屏最多只能显示两个,那在每个按钮左上角放上(1/10)字样,让用户很快知道前、后还有多少内容。

 

一、布局

栈层(stack)

布局“radio”类型的stack控件时,要注意控件的标称尺寸来自当前正显示layer的那个标称尺寸。虽然有提供选项让取最大layer尺寸,但慎选。

对单选模式,为什么不像画中画一样取所有layer中最大的标称尺寸。1)按布局规则,INVISIBLE状态的控件不应该计算标称尺寸,layer也是控件,一旦不符合就会造成错误。举个例子,要用layout_init置text_maximum_width_为0,而tgrid::layout_init只清visible!=twidget::INVISIBLE的栅格,此时若计算visible==twidget::INVISIBLE栅格标称尺寸,会使得当中存在多行文本控件时,用不是0的text_maximum_width_去计算,导致算出过大标称尺寸。2)app可能在每个layer放上复杂布局,每次计算标称尺寸时都要算所有layer会影响效率。举个例子,该窗口从上到下以着header、body、navigation布局,body顶层就是个stack,然后通过navigation切换到相应layer。

如果放置的stack,可用渲染尺寸依赖于第一次显示的那个layer,而切换到其它layer需要更大渲染尺寸,那极可能造成问题。像1)第一次显示的是第3页,切到2页时,失败。但如果一开始显示的是2页,切到3页却成功。这可能是2页的标称尺寸大于3页。2)导致tgrid::place中错误。——考虑有时取最大layer能让布局更简洁,该stack也不复杂,还是提供了取最大layer选项。launcher中的“velocity_stack”。

 

报表(report)

对多行报表,如果各个单元控件含有长、短不一文字,建议给宽度的标称尺寸设个固定值。原因是多行时,一旦宽度没有设固定值,报表单元标称尺寸取的是第一个显示单元的标称尺寸。设固定值能避免报表布局受第一个单元是啥文字的影响。

举个例子,有一个单元类型是vertical_node风格按钮的多行报表。在t1时刻,第一个单元底下文字是“聊天”,算出的标称尺寸是(96, 116),此时报表会按96这个宽度去布局每个单元(多行报表时,每单元尺寸必相等)。在t2时刻,第一个单元文字是“去位置”,算出标称尺寸是(108, 116),此时报表会变成按108这个宽度去布局每个单元。

全部评论: 0

    写评论: