2010-06-17 54 views
0

以下代碼使用List控件顯示註釋列表。項目高度設置爲固定值(150),所以它似乎工作:如果內容太長,滾動條顯示...如何在Flex中爲List控件項設置可變大小?

但是,我真正想要的不是設置高度,而是讓它根據內容大小而改變。有什麼辦法可以做到這一點?

 <mx:List id="commentList" width="100%" dataProvider="{commentSet.commentArrayColl}" 
      rowCount="{commentSet.commentArrayColl.length}" > 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:VBox width="100%" height="150" > 
         <mx:Text text="{data.commentContent}" /> 
         <mx:Text text="{data.username} ({data.modified})"/> 
        </mx:VBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:List> 

編輯: 更清楚,我不想設置itemRenderer的垂直框高度,以「150」或任何其他固定值 - 但它只會顯示,如果我不文本的一行不行。所以我正在尋找一條出路。 (如果垂直框不是的itemRenderer裏面,它會自動ajust高度文本字段字符串長度的增長 - 這就是我想要的。)

回答

3

添加結合DataProvider.length的函數* 150 height屬性:

<mx:List id="commentList" width="100%" dataProvider="{commentSet.commentArrayColl}" 
     rowCount="{commentSet.commentArrayColl.length}" height={commentSet.commentArrayColl.length*150}> 
     <mx:itemRenderer> 
      <mx:Component> 
       <mx:VBox width="100%" height="150" > 
        <mx:Text text="{data.commentContent}" /> 
        <mx:Text text="{data.username} ({data.modified})"/> 
       </mx:VBox> 
      </mx:Component> 
     </mx:itemRenderer> 
    </mx:List> 
+0

不是。問題是「List Item」的高度 - 列表itemReferer,而不是「List」iteself。 (上面的代碼實際上和原來的一樣。) – joejax 2010-06-17 07:50:27

+0

然後在列表中執行bug-a-lot說:variableRowHeight =「true」並刪除VBox height屬性。 – drummondj 2010-06-17 15:18:24

1

請不要在VBox上設置高度,並在列表上將variableRowHeight設置爲true。雖然我不確定這個名單有多棒。

或者,由於您沒有真正使用itemRender回收的優勢(因爲rowCount = dataProvider.length),您可能需要考慮使用中繼器而不是列表。

+0

variableRowHeight似乎無法正常工作,但是Repeater幾乎是一個完美的解決方案,直到我在編輯該項目時遇到了問題:我讓中繼器顯示一個文本列表,並且一旦點擊它就切換到TextArea,因此可以進行編輯。直放站不容易獲得像列表一樣的選定項目。 (我得到錯誤:中繼器沒有執行) – joejax 2010-06-18 05:52:12

+0

好吧,如果你想用中繼器選擇,你需要自己實現它。中繼器所做的只是將組件添加到容器中,然後您就可以獨立使用。 – 2010-06-18 11:55:12

相關問題