2010-06-17 5 views
0

다음 코드는 목록 컨트롤을 사용하여 설명 목록을 표시합니다. 항목 높이가 고정 값 (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의 VBox의 높이 "150"또는 다른 고정 값을 설정하지 않으 더 명확하게하려면 -하지만 그것은 단지 내가 돈 경우 한 줄의 텍스트를 보여 드리겠습니다 그럴 수 없어. 그래서 나는 이것에서 벗어날 길을 찾고 있습니다. 합니다 (중 VBOX는 itemRenderer를 내부가 아닌 경우는 텍스트 필드의 문자열 길이로 자동 ajust 높이가 증가합니다 - 그게 내가 원하는거야.)

답변

3

가 * 150 dataProvider.length의 기능을 결합하는 높이 속성 추가 :

<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

아니요. 문제는 '목록 항목'의 높이입니다. '목록'자체가 아니라 itemReferer를 나열하십시오. (위의 코드는 실제로 원래 코드와 동일하게 동작합니다.) – joejax

+0

그런 다음 bug-a-lot은 varRightHeight = "true"를 List에 추가하고 VBox 높이 속성을 제거합니다. – drummondj

1

VBox에서 높이를 설정하지 말고 목록에서 variableRowHeight를 true로 설정하십시오. 비록 List가 그걸 가지고 놀 수 있을지 잘 모르겠지만.

또는 itemRender 재활용 (rowCount = dataProvider.length)의 장점을 실제로 사용하지 않으므로 목록 대신 리피터를 사용하는 것이 좋습니다.

+0

variableRowHeight는 작동하지 않는 것 같지만 Repeater는 항목을 편집 할 때 문제가 발생하기 전까지 거의 완벽한 솔루션입니다. 리피터를 Text 목록으로 표시하고 한 번 클릭하면 TextArea로 전환되어 편집 할 수 있습니다. 리피터는 List와 같이 선택한 항목을 쉽게 가져올 수 없습니다. (오류가 발생했습니다 : 리피터가 실행되지 않습니다) – joejax

+0

리피터를 사용하여 선택을 원한다면 직접 구현해야합니다. 리피터가하는 일은 컨테이너에 컴포넌트를 추가하는 것입니다. –

관련 문제