2011-03-22 70 views
1

這對我來說很奇怪,但我也是Spark的新手。我有一個帶有itemrenderer的List類。我怎樣才能讓itemrenderer在他們之間劃分List寬度?通常情況下,我認爲這將是一件容易的事,因爲給渲染者一個百分比寬度,但是沒有用處。有任何想法嗎?Flex Spark列表是否可以有100%寬度的itemrenderer?

應用:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    minHeight="600" 
    minWidth="955" 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 
<fx:Declarations> 
    <s:ArrayCollection id="dta"> 
     <fx:Object 
       label="one" /> 
     <fx:Object 
       label="two" /> 
     <fx:Object 
       label="three" /> 
     <fx:Object 
       label="four" /> 
    </s:ArrayCollection> 
</fx:Declarations> 

<s:List 
     width="100%" 
     borderColor="red" 
     dataProvider="{dta}" 
     xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
     itemRenderer="ProgressIndicatorItemRenderer"> 

    <s:layout> 
     <s:HorizontalLayout gap="0" /> 
    </s:layout> 
</s:List> 
</s:Application> 

的itemRenderer:

<?xml version="1.0" encoding="utf-8"?> 
<s:ItemRenderer 
    width="100%" 
    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="false" 
    showsCaret="false"> 

<s:states> 
    <s:State name="normal" /> 
    <s:State name="selected" /> 
    <s:State name="done" /> 
</s:states> 

<s:Rect id="progressIndicatorBackground" 
     left="0" right="0" top="0" bottom="0"> 
    <s:fill> 
     <s:SolidColor 
       color.done="0xCCCCCC" 
       color.normal="0xCCCCCC" 
       color.selected="0xF6A139" 
       alpha="1" /> 
    </s:fill> 
</s:Rect> 

<s:Label 
     width="100%" 
     text="{data.label}" /> 

</s:ItemRenderer> 
+0

嗨! 「分隔它們之間的列表寬度」是什麼意思? – Kodiak 2011-03-22 08:59:24

回答

6

我認爲你只是缺少在佈局本身的一些特性:

<s:List width="100%" useVirtualLayout="false" borderColor="red" dataProvider="{ dta }" 
    itemRenderer="ProgressIndicatorItemRenderer"> 

    <s:layout> 
     <s:HorizontalLayout gap="0" requestedColumnCount="-1" requestedMinColumnCount="-1" variableColumnWidth="true" /> 
    </s:layout> 

</s:List> 

設置variableColumnWidth爲true,useVirtualLayout到假應該可以解決你的問題。 RequestedColumnCount和requestedMinColumnCount默認設置爲-1,但最好將它們明確設置:)

我希望上面的代碼有所幫助。

+1

男人,謝謝!這讓我瘋狂。但我真的認爲這裏有一個錯誤。 – 2011-03-22 14:34:25

+0

Np。我很高興我可以幫助:) – MonkeyCoder 2011-03-22 15:24:49

+1

默認情況下,Spark List的useVirtualLayout設置爲true。虛擬佈局不尊重佈局元素的主軸百分比大小屬性(Horizo​​ntalLayout中的百分比寬度)。爲了得到這個工作,你需要像MonkeyCoder建議的那樣將useVirtualLayout設置爲false。有關更多詳細信息,請參閱Spark Virtualization規範:http://opensource.adobe.com/wiki/display/flexsdk/Spark+Virtualization – 2011-03-25 18:45:04

相關問題