以对话框ht.ui.Dialog为例,渲染元素显示在编辑状态的图纸中,来看圆角、边框线、背景矩形和阴影矩形相关。
现设置padding为100,背景为黄色,留下四周区域,如下图所示,可以看到黄色背景区域了。
如果直接用setBorderRadius()设置圆角,通常出现圆形边框线画在背景矩形之上的效果,且一旦背景矩形设置透明,圆角边框成为镂空的“轨道”了,显然不是我们想要的圆角效果。
此时在去掉背景后(透明),发现还有灰色矩形存在,设置阴影比如dialog.setBoxShadow('0px 8px 22px rgba(255,0,0,1)'),中间矩形还是灰色,灰色矩形与背景、阴影并无关系!
不过灰色区域可以不用关心,实际对话框运行状态下,灰色区域是透明的(也是为什么设置边框圆角、背景透明后会成为“轨道圆角环线”的效果)
|
|
现在回到主题,如何实现对话框矩形区域理想的圆角效果。
首先,所有可以setBackground()的方法,基本都可以设置背景自绘:setBackgroundDrawable,这时就可以用到图标结合绑定动态变量传参了,而且图标除了是svg常规的icon图标,还完全可以是一个手动创建的圆角矩形,并且把圆角radius做数据绑定暴露出来可配置。
这样就实现了原本以为需要且只能填入背景色的区域,完全可以用做了数据绑定、暴露属性变量的图标,这样就实现了理想效果!