开发人员如何只为 Flex 组件的一个部分设置皮肤,而不必重新编写该组件的整个渲染?
ESRI 的 ArcGIS Flex Viewer (3.0) 有一个 WidgetTemplate 容器,我想只对其中的一个部分进行蒙皮,而不必负责整个容器的渲染。例如,我只想对这个容器的皮肤部分进行皮肤处理:
[SkinPart(required="false")]
public var header:Group;
这样我就可以将标题嵌入标签的颜色设置为我想要的任何颜色。
因此,我创建了以下名为PrintWidgetSkin.mxml的皮肤:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<!-- host component -->
<fx:Metadata>
[HostComponent("com.esri.viewer.WidgetTemplate")]
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="open" />
<s:State name="minimized" />
<s:State name="closed" />
<s:State name="disabled" />
<s:State name="normal" />
</s:states>
<s:Group id="header">
<s:Label color="0x000000" />
</s:Group>
</s:Skin>
并将WidgetTemplate 实例的skinClass属性分配给这个皮肤:
<viewer:WidgetTemplate id="wTemplate"
width="345" height="285"
minWidth="345"
minHeight="285"
styleName="fontstyle"
accentColor="0x33FF66"
color="0x33FF66"
skinClass="widgets.Print.PrintWidgetSkin">
</viewer:WidgetTemplate>
然而,当这个 skinClass 被分配给它时,容器根本不显示。
为了澄清,是否可以只对一个皮肤部分进行蒙皮,而将其他皮肤部分和容器的其余部分渲染为正常?
我的主要来源是 Adobe 的皮肤页面:关于 Spark Skins