2012-01-20 6 views
1

顧客の過去の状態と可能な状態の両方を表示できるドロップダウンを作成しようとしています。Flex Spark DropDownList - 項目間の区切りを追加します。

しかし、過去の状態と可能な状態の間にセパレータを追加したいと思います。

実際には、私はdataproviderに "-----"のような項目を追加します。

しかし、ルックアンドフィールが良くなく、このアイテムが選択されている可能性があります。

私の理想的なアプローチは、そのようなものです:

良く行うために、どのように?

ご意見をお寄せください。

+0

既にこれを達成したようですが、視覚的な結果に不満です。そうであれば、コードやスクリーンショットであなたがしたことをどのように共有するのですか?あなたの「理想的な」アプローチがどんなものかを教えてください。それから提案をすることができます。 – JeffryHouser

+0

私はあなたが何をしようとしたかを説明しているので、あなたの編集を+1します。あなたが達成したいと思っているものがあります。 – JeffryHouser

答えて

0

私が考えることができる唯一の方法は、DropDownListのカスタムスキンを作成することです。

私はそのコンポーネントをスキンしていないので、詳細はわかりませんが、Flash Builderを使用している場合、コンポーネントの新しいスキンを作成するのは非常に簡単です。 「スキン」セレクタの右側にあるスキンを作成を選択します。次に、コンポーネントの外観についてすべてをカスタマイズできます。

+0

私はDropDownListのカスタムスキンは解決策ではないと確信しています。ドロップダウンリストにデータグループが表示されます。 itemRendererに項目を持たずに、データグループ内の "余分な線"をどのように押し込むのですか?私は、条件付きでレンダラの一部としてラインを含むカスタムitemRendererは、行く方法だろうと思います。 – JeffryHouser

+0

@flextras - +1カスタムItemRendererを使うべきです。また、垂直レイアウトのギャップを設定し、リストの背景にアイテム間の線を作成させることもできます。 –

0

私はカスタムItemRendererを使用します。最後の項目では、行を非表示にすることができます。ただし、このコードでは、所有者がバインド可能ではないというデータバインディング警告が表示されます。

<s:itemRenderer> 
    <fx:Component> 
     <s:ItemRenderer width="100%" height="100%" 
         autoDrawBackground="true"> 
      <fx:Script> 
       <![CDATA[ 
        import spark.components.supportClasses.ListBase; 
       ]]> 
      </fx:Script> 
      <s:states> 
       <s:State name="normal"/> 
       <s:State name="down"/> 
       <s:State name="hovered"/> 
       <s:State name="selected"/> 
       <s:State name="dragging"/> 
       <s:State name="normalAndShowCaret"/> 
       <s:State name="hoveredAndShowCaret"/> 
       <s:State name="selectedAndShowCaret"/> 
      </s:states> 


      <s:Line width="100%" top="2" visible="{itemIndex==outerDocument.lengthOfFirstItems-1}"> 
       <s:stroke> 
        <s:SolidColorStroke weight="1" caps="square"/> 
       </s:stroke> 
      </s:Line> 

      <s:Group top="8" left="2" right="2" bottom="2" width="100%" height="100%"> 
       <s:Label id="labelDisplay" verticalCenter="1" horizontalCenter="0" /> 
      </s:Group> 
     </s:ItemRenderer> 
    </fx:Component> 
</s:itemRenderer> 

ドキュメントでは、int型のlengthOfFirstItemsという変数を作成します。あなたは2つの配列を持っていると思いますか? 1つはトップアイテム用、もう1つはボトム用ですか?そうであれば、最初の配列に2番目の配列を追加します(または3番目の配列をすべて作成します)。配列に参加する前に、lengthOfFirstItemsをアイテムの最初のセットの長さに設定します。したがって、画像を使用すると、2つの項目があるので長さが2になる例があります。次に、行、次に残りの項目が表示されます。

// position of end of first array. must be public to be accessible by outerDocument 
public var lengthOfFirstItems:int = -1; 

// get length of first array 
lengthOfFirstItems = firstArray.length; 

この例では、行はアイテムの最初の配列の最後の行に表示されます。コードの一部は擬似コードなので、おそらくコードを調整する必要があります。

+0

お手伝いをしてくれてありがとうございます。サンプルでは、​​各項目の間に行が追加されています。または私の場合、私は2つの部分dropdowlistに分割したいと思います。 – Flex60460

関連する問題