2012-12-18 5 views
0

제 코드에서 dataprovider의 항목으로 구성된 목록이 있습니다. 목록의 itemRenderer는 텍스트가있는 BorderContainer로 구성됩니다. 스크롤 목록에서 일련의 버튼을 모방합니다. 나는 그것이 "버튼"위에 지나갈 때 커서가 손 모양 커서로 바뀌길 바란다. 그러나 포인터는 텍스트로 덮여 있지 않은 BorderContainer 부분에서만 바뀐다.텍스트가있는 BorderContainer가 buttonMode를 올바르게 표시하지 않습니다.

나는 목록을 true로 buttonMode가 설정 한

pointer over the BorderContainerpointer over text

의 BorderContainer, 텍스트, 왜 텍스트 위로 통과 할 때 변경 커서가 아니다?

목록 코드

<s:List id="listProject" width="100%" height="100%" horizontalScrollPolicy="off" allowMultipleSelection="false" 
         click="listProject_clickHandler(event)" itemRenderer="ProjectRenderer" 
         dataProvider="{listProjects}" creationComplete="listProject_creationCompleteHandler(event)" buttonMode="true"> 

입니다 그리고 이것은 그냥 불꽃 Label 대신 MX 사용하는 렌더러

<?xml version="1.0" encoding="utf-8"?> 
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      autoDrawBackground="true"> 

    <!--<s:Label text="{data.header}"/>--> 
    <s:states> 
     <s:State name="normal"/> 
     <s:State name="hovered"/> 
     <s:State name="selected"/> 
    </s:states> 

    <!--<s:Image source.normal="{data.image1}" source.hovered="{data.image2}"/>--> 

    <s:BorderContainer width="200" height="50" backgroundColor="{data.color}" 
        borderColor.selected="#FFFFFF" borderVisible.normal="false" 
        borderVisible.selected="true" borderWeight.selected="4" borderStyle.selected="inset" buttonMode="true"> 
     <s:layout> 
      <s:HorizontalLayout verticalAlign="middle" horizontalAlign="center"/> 
     </s:layout> 
     <mx:Text width="200" text="{data.header}" selectable="false" 
       color="#FFFFFF" fontSize="15" fontWeight="bold" leading="0" textAlign="center" buttonMode="true" useHandCursor="true"/> 
    </s:BorderContainer> 
</s:ItemRenderer> 

답변

0

입니다 : 텍스트를 당신은 괜찮을거야.

또한 코드에 중복이 있습니다. 나는 조금 내려 트리밍의 자유를했다 : 공중 선회 또는 선택하면

<s:BorderContainer width="200" height="50" backgroundColor="{data.color}" 
        borderColor.selected="#FFFFFF" borderVisible.normal="false" 
        borderVisible.selected="true" borderWeight.selected="4" 
        borderStyle.selected="inset" buttonMode="true"> 

    <s:Label text="{data.label}" color="#FFFFFF" fontSize="15" fontWeight="bold" 
      horizontalCenter="0" verticalCenter="0"/> 
</s:BorderContainer> 

이것은 또한 텍스트의 불쾌한 jumpiness가 해결됩니다.

+0

감사합니다. 덕분에 width와 textAlign 속성이 필요했지만 두 줄로 나뉘어있는 텍스트가 있었기 때문에. – kenbuja

0

mx : Text와의 상호 작용이 필요 없으면 부모의 mouseChildren 속성을 false로 설정할 수 있습니다. 문제가 해결 될 것입니다. 다음은 간단한 예입니다.

<s:ItemRenderer> 
    <s:BorderContainer width="200" buttonMode="true" useHandCursor="true" mouseChildren="false"> 
     <mx:Text text="No many text" selectable="false" />     
    </s:BorderContainer> 
</s:ItemRenderer> 
+0

RIAstar에서 제안한 Spark 솔루션을 사용하기로 결정했지만이 답변을 제공해 주셔서 감사합니다. – kenbuja

관련 문제