2012-01-20 48 views
1

之間添加分隔符我試圖創建一個可以顯示客戶的過去狀態和可能狀態的下拉列表。Flex Spark DropDownList - 在項目

但我想在過去和可能的狀態之間添加一個分隔符。

實際上,我在數據提供者上添加了一個像「-----」這樣的項目。

但外觀和感覺不好,可能會選擇此項目。

我理想的做法是這樣的:

那麼如何做得更好?

任何建議,將不勝感激!

+0

這聽起來像你已經完成了這一點,但不滿意的視覺效果。如果是這樣的話,那麼通過代碼和/或屏幕截圖分享您的所作所爲。同時告訴我們你的'理想'方法是什麼。然後我們可以提供建議。 – JeffryHouser

+0

我+1你的編輯,因爲它解釋你試圖做什麼;以及你想要完成什麼。 – JeffryHouser

回答

0

我能想到的唯一方法是爲DropDownList創建自定義外觀。

我從未剝皮該組件,所以我不能給你更多的細節,但如果你使用的是Flash Builder,爲組件創建新皮膚非常容易:只需用畫筆和齒輪點擊圖標即可右邊的「皮膚」選擇器並選擇創建皮膚。然後,您可以自定義有關組件外觀的所有內容。

+0

我很確定DropDownList的自定義皮膚不是解決方案。下拉列表與DataGroup一起顯示。如果沒有itemRenderer中的項目,你會如何在DataGroup中推「額外的行」?我認爲一個自定義的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> 

在您的文檔中創建一個名爲lengthOfFirstItems類型爲int的變量。我假設你有兩個數組?一個用於頂部項目,另一個用於底部?如果是這樣,那麼將第二個數組添加到第一個數組(或者使用它們全部創建第三個數組)。在加入數組之前,將lengthOfFirstItems設置爲第一組項目的長度。因此,使用圖像的例子,長度將是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

感謝您的幫助,但與您的樣品線添加每個項目之間。或者在我的情況下,我想分成兩部分下拉列表。 – Flex60460