如何为Flex中的List控件项设置可变大小?

时间:2010-06-17 06:47:00

标签: flex list flex3 itemrenderer

以下代码使用List控件显示注释列表。项目高度设置为固定值(150),因此看起来很有效:如果内容太长,滚动条会显示......

但是,我真正想要的不是设置高度,而是根据内容大小进行更改。有没有办法实现这个目标?

        <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中,它将自动调整高度,因为文本字段字符串长度增长 - 这就是我想要的。)

2 个答案:

答案 0 :(得分:3)

添加一个绑定dataProvider.length * 150函数的高度属性:

    <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>

答案 1 :(得分:1)

尝试不在VBox上设置高度,并在列表中将variableRowHeight设置为true。虽然我不确定List会对它有多好。

或者,由于您没有真正利用itemRender回收的优势(因为rowCount = dataProvider.length),您可能需要考虑使用转发器而不是列表。