【发布时间】:2009-12-31 01:53:12
【问题描述】:
这是我的代码中的一个片段:
<mx:Panel id="recPanel" title="I have the following helpful recommendations for you:"
verticalScrollPolicy="off" width="100%" height="180">
<mx:List dataProvider="{recommendations}" wordWrap="true" variableRowHeight="true"
verticalScrollPolicy="auto" width="100%" height="100%" />
</mx:Panel>
'recommendations' dataProvider 是一个String的ArrayCollection,一般都是这么长的句子。通过设置 variableRowHeight 和 wordWrap 属性,如图所示,如果一个句子太长而不能放在一行中,一切都会正常进行 - 行扩展并且消息显示在两行,有时是三行。
在整个画布中分配给此面板的空间意味着如果“建议”的总文本大小超过六行,我需要整个列表滚动。这也工作得很好。问题是当使用鼠标滚轮进行滚动时——Flex 会滚动整个列表和鼠标悬停的单个项目。通常这会导致只有句子的后半部分可见。我要求非程序员的朋友看看这个注意到了这一点,并告诉我这是一个问题。如果用户没有注意到双重滚动,而只看到句子的片段,则会被认为是应用程序中的错误。
我尝试过放入 itemRenderer,既可以作为插件也可以作为组件。如果渲染器关闭了veritcalScrollPolicy,它解决了项目内的滚动,但意味着整个列表不会随着滚轮滚动,只能使用滚动条。
我更愿意找到一个两全其美的解决方案:允许列表的鼠标滚轮,但防止滚动其中的单个项目。欢迎任何想法。
【问题讨论】:
标签: apache-flex list scroll