我正在为皮肤Spark:TabBar
蒙皮,但我遇到了用我的自定义皮肤用于选项卡按钮的障碍。这里是什么,我试图完成一个图:自定义Flex皮肤 - 按钮皮肤中的辅助按钮
_______________________
| |
| Label X |
|_____________________|
所以我们有一个按钮(我使用的是spark:ButtonBarButton
组件上的自定义皮肤),有去除说一个标签和一个辅助按钮项目从列表中。仅当用户将鼠标悬停在主按钮上时才应显示X
按钮。
我的问题是,我完全无法与X
按钮进行交互,因为它是按钮内的按钮。它不响应悬停状态,我附加到它的任何点击处理程序不会触发 - 而是父按钮的点击事件触发。
我目前正忙于使用stopPropagation
,但这不会(或者我不指望它)解决悬停状态问题,并且正在寻找更可行的解决方案。
这里是我的代码的一些例子:
VerticalPillBarSkin - hostComponent:spark.components.TabBar
<s:DataGroup id="dataGroup" width="100%" height="100%" clipAndEnableScrolling="true">
<s:layout>
<s:VerticalLayout paddingRight="3" gap="3"/>
</s:layout>
<s:itemRenderer>
<fx:Component>
<s:ButtonBarButton skinClass="{VerticalPillBarButtonSkin}" width="120"/>
</fx:Component>
</s:itemRenderer>
</s:DataGroup>
VerticalPillBarButtonSkin - 注意SymbolButton
是延长ButtonBase一个自定义组件。
<s:Label id="labelDisplay" color="0x000000"
textAlign="left" verticalAlign="middle"
horizontalCenter="0" verticalCenter="1"
left="0" right="12" top="6" bottom="6" />
<s:Spacer width="100%" />
<x:SymbolButton id="removeButton"
includeIn="overStates"
icon="{REMOVE}"
iconRollover="{REMOVE_OVER}"
right="5" verticalCenter="0" click="closeHandler()" />
有没有人知道解决此问题的好方法?我曾经使用s:ButtonBarButton
以外的东西作为VerticalPillBarButton
,但这似乎不是一个可行的选择。如果有任何其他信息可以提供,请随时询问。
谢谢。我试过这个,但由于某种原因,我无法将一个事件监听器附加到'creationComplete'处理程序中的按钮 - 由于某种原因,该按钮为'null'。有没有更好的时间来附加听众? –
'CREATION_COMPLETE'应该是正确的,但是看着你的MXML,它看起来像你已经有一个附加的点击处理程序('closeHandler()',你只需要改变为'closeHandler(event)',以便事件通过作为参数) –
由于它是一个外观部件,因此您必须以不同的方式处理它,如果我正确理解这一点,则可能必须重写自定义组件上的partAdded()方法。 – Zeus