我知道有很多关于Flex组件的动态大小的问题,但是这个问题非常具体,而其他答案并没有很多帮助。简而言之,我需要一个调整大小以完全适合其内容的List,除非该高度超过其(动态大小)父容器。我的要求如下:
variableRowHeight
和wordWrap
都等于true
。minHeight
(滚动条箭头大约为32px)。问题在于variableRowHeight
和wordWrap
,在任何给定时间都很难知道内容的大小。如果父容器的宽度减小,则列表中可能会出现换行,这将改变内容的高度。我知道我可以使用measureHeightOfItems() + viewMetrics.top + viewMetrics.bottom
来衡量列表内容的高度,但什么时候应该计算出来?我应该听哪些事件?而我遇到的最麻烦的事情是 - 我应该在什么时候计算它来设置最初的大小(即内容已经完成填充)?
我几个月来一直在处理这个问题,但是却找不到解决方案(尽管我已经接近了不同程度不可理解的代码块)。我不是要求有人为我创建一个完整的组件,我只是希望有人有正确的指示,让我知道如何确定和更新大小。我很高兴为您做所有的原型设计并讨论结果:)
。
答案 0 :(得分:1)
自定义Flex组件绝对是他们自己的野兽。你花了好几个月的时间在一个人身上投入了很多精力!
如果你还没有看过,你当然应该看看Flex Component Lifecycle。这将回答您关于执行代码的位置的问题。我相信measure()
和commitProperties()
对您的组件非常重要。
在管理具有动态大小的子级和/或父级的组件时,我还发现validateNow()
是一个非常有用的功能。我还没有想出何时调用此函数的最佳时间,但在计算Flex组件的大小时似乎是必要的。在judah's blog上有一篇关于它的信息性文章。
祝你好运!
更新 - 我偶然发现了一篇关于DevelopmentArc的Flex组件生命周期的看似精彩的文章,我正在添加到我自己的阅读列表中。