开发人员如何在不需要重新编写该组件的整个渲染的情况下仅覆盖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关于皮肤的页面:About Spark Skins
答案 0 :(得分:1)
它不会显示,因为 com.esri.viewer.WidgetTemplate.as 的几个皮肤部分在您创建的皮肤中没有考虑。
如果您只想在单个小部件中更改标题的标签颜色,我建议您更改Print Widget的creationComplete处理程序中的颜色,而不是创建一个全新的外观。
另外,请查看 com.esri.viewer.skins.WidgetTemplateSkin.mxml 以获取更多想法和/或修改全局窗口小部件样式。