当前位置:  开发笔记 > 后端 > 正文

在Flex中调整容器大小的最佳方法是仅服从父容器的显式维度

如何解决《在Flex中调整容器大小的最佳方法是仅服从父容器的显式维度》经验,为你挑选了2个好方法。

我已经在Flex中遇到了这个问题将近一年,而且每次我都会使用快速的黑客解决方案.我想看看是否有人有更好的主意.

以下是问题的条件:

|------Container  ------------|
|  explicitHeight:  400 (or whatever)
|                             |
|  |-------- VBox  -------|   |
|  |  percentHeight: 100  |   | 
|  |                      |   |
|  |  |-Repeater------|   |   |
|  |  | Potentially   |   |   |
|  |  | a lot of stuff.   |   |
|--|--|---------------|---|---|

问题是,与我想要发生的情况相反,VBox将始终扩展以容纳其中的内容,而不是坚持其父级的显式高度并创建滚动条.

我的解决方案是在对父代的引用中进行硬编码(或者在显示列表中我们需要找到明确设置的值而不是百分比).

我甚至考虑在实用程序类中使用它:

public static function getFirstExplicitHeightInDisplayList(comp:UIComponent):Number{
    if (!isNaN(comp.explicitHeight)) return comp.explicitHeight;
    if (comp.parent is UIComponent) return    
         getFirstExplicitHeightInDisplayList(UIComponent(comp.parent));
    else return 0;
}

请告诉我有更好的方法.



1> 小智..:

设置minHeight = 0就是你需要做的.

这告诉VBox在调整自身大小时忽略它的孩子的测量值,而是根据它自己/它的父母约束来计算它的高度.像往常一样设置其他所有内容,滚动,其他一切都将完美运行.

一年前在这一天度过了一天 - 这不是直观的,他们本可以更好地命名这个属性.希望这能节省你们一些时间......


另一个Flex没有意义的例子.我倾向于保留这些东西的清单......

2> 小智..:

您必须在VBox上使用"autoLayout"参数,因为文档说:

"默认情况下,VBox容器的大小足以将图像保持为原始大小.如果禁用布局更新,并使用缩放效果放大图像,或使用移动效果重新定位图像,图像可能会延伸超过VBox容器的边界.

您将autoLayout属性设置为false,因此VBox容器不会随着图像调整大小而调整大小.如果图像增长为了使其超出VBox容器的边界,容器添加滚动条并在其边界处剪切图像.

我希望这会对你有所帮助.



推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有