0

我有一个使用数组集合作为数据提供者的列表控件。数组集合在 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 确实检索了所有项目,并将它们呈现在列表中。唯一的问题是列表中任何两个行项目之间的空间很大,并且占用了任意数量的空间。我希望列表项在另一个之后立即呈现,而不是在中间有大量空间。

谁能说明这里到底出了什么问题?

4

1 回答 1

1

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

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

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

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

于 2012-10-30T20:11:09.523 回答