我正在爲皮膚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