0

我从默认按钮皮肤开始为火花按钮创建一个新皮肤。然后我删除了皮肤中的所有层,除了文本层。如果我正常使用这个皮肤的按钮,一切正常。如果我将按钮放在 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>

我怎样才能阻止这种情况发生?

4

1 回答 1

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>

有没有更好、更优雅的方式?

于 2011-01-11T10:22:18.183 回答