0

私のコードには、データプロバイダーからの項目で構成されたリストがあります。リストの itemRenderer は、テキストを含む BorderContainer で構成されます。スクロール リストのボタンの行を模倣しています。「ボタン」の上を通過するときにカーソルをハンドカーソルに変更したいのですが、テキストで覆われていないBorderContainerの部分でのみポインターが変更されます。

BorderContainer 上のポインター テキスト上のポインター

リスト、BorderContainer、およびテキストに対して buttonMode を true に設定したのに、テキストを通過するときにカーソルが変化しないのはなぜですか?

リストコードです

<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">

そして、これがレンダラーです

<?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>
4

2 に答える 2

0

mx:Text の代わりにSpark Labelを使用するだけで問題ありません。

また、コードには冗長性があります。私はそれを少しトリミングする自由を取りました:

<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>

これにより、ホバーまたは選択時のテキストの厄介なジャンプも修正されます。

于 2012-12-18T23:04:40.940 に答える
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>
于 2012-12-19T07:37:07.777 に答える