我的mx:list控件中任意两个列表项之间的大量不需要的空间

时间:2012-10-29 18:54:54

标签: flex list listitem

我有一个列表控件,它使用数组集合作为数据提供程序。数组集合在actionscript中初始化。该列表如下所示:

<mx:List  width="500" id="activeMessages" styleName="messages" variableRowHeight="true" verticalScrollPolicy="off" horizontalScrollPolicy="off" 
 dataProvider="{activeMessageTitles}"/>

和styleName .messages是这样的:

.messages{
            border-style:solid;
            corner-radius:4;
            border-color:#cccccc;
            padding:0 0 0 0;
            background-color:#DCDCDC;
            margin-bottom:400px;
            padding-bottom:120px;
        }

数组集合动态加载数据并已经过验证,因此它具有必需的数据。必要的数据只是随机单词而不是句子,对于任何给定的数组,不超过两个单词。

var activeMessageTitles:ArrayCollection = new ArrayCollection();

问题在于格式化。 dataProvider会检索所有项目,并在列表中呈现它们。唯一的问题是列表中任何两个行项之间的空间很大,占用了任意数量的空间。我希望列表项能够一个接一个地渲染,而不是在中间有大量的空间。

任何人都可以指出这里究竟出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

问题听起来像虚拟化。列表回收项目渲染器,仅用于显示屏幕上可见的内容。滚动时,flex将获取刚刚离开视图的渲染器,并将其重新用于进入视图的渲染器。根据回收渲染器中消息的大小,它仍然会保留那么大的高度......即使插入新消息的信息很小。

要解决此问题,请创建项目渲染器(大量教程)并覆盖其set data()方法,以便您可以调整渲染器的大小以适应新内容。

有关详细信息,请参阅此链接:

http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html