我从默认按钮皮肤开始为spark按钮创建一个新皮肤。然后我删除皮肤中的所有图层,文本图层除外。如果我正常使用这个皮肤的按钮,一切都很好。如果我将按钮放在ItemRenderer中,当我将其中一个按钮悬停时,它会变成灰色阴影。这是一个代码示例。
皮肤:
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="21" minHeight="21" alpha.disabled="0.5">
<!-- host component -->
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<!-- layer 8: text -->
<!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
<s:Label id="labelDisplay"
textAlign="center"
verticalAlign="middle"
maxDisplayedLines="1"
horizontalCenter="0" verticalCenter="1"
left="10" right="10" top="2" bottom="2">
</s:Label>
我使用它的代码:
<s:applicationComplete>
<![CDATA[
dg.dataProvider = new ArrayList(['but1', 'but2']);
]]>
</s:applicationComplete>
<s:DataGroup id="dg">
<s:layout>
<s:HorizontalLayout gap="0" />
</s:layout>
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:Button skinClass="Test" label="{data}" width="200" height="50"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:DataGroup>
如何阻止这种情况发生?
答案 0 :(得分:1)
它是由项呈示器引起的。 我添加了这个并且它有效:
<s:ItemRenderer>
<fx:Script>
<![CDATA[
override protected function get hovered():Boolean {
return false;
}
]]>
</fx:Script>
<s:Button skinClass="Test" label="{data}" width="200" height="50"/>
</s:ItemRenderer>
有更好,更优雅的方式吗?