项目中要用到一个可以自定义文字格式和图标的 Button,首先,Spark 的 Button 是可以设置 icon 属性的,同时它的默认皮肤中的外观部件(SkinPart)labelDisplay 是一个 Label也可以设置文字样式,但 Label 所支持的文字样式并不能满足我的需求,再继续看 labelDisplay 这个属性,它可以指定为任何一个实现了 IDisplayText
接口的对象,而 IDisplayText 的实现是在 TextBase
中,继续看 TextBase 的子类,一个是 Label,而另一个则是 RichText
,RichText
是支持富文本的,可以完美解决文字的问题。
经过初步修改后,Button 中的内容是居中对齐的,而我期望的结果是靠左对齐,对此百思不得其解,只好查看 SparkButtonSkin 的源码,重点在 constructIconParts 方法中,在设置了 icon 的情况下,iconDisplay 和 labelDisplay是放在一个名为 iconGroup 的容器中的,参考这篇文章,在 Button 皮肤中指定 autoIconManagement="false"
,取消皮肤对 iconDisplay 和 labelDisplay 的自动布局,更诡异的事情出现了,图标竟然不见了,仔细对照发现原文中设置了 iconDisplay 的 includeLayout 属性,问题解决。
自定义 Button 图标及文字格式
·
1 min read
