I've been running into this problem with Flex for nearly a year, and each time I work up a quick hack solution that works for the time being. I'd like to see if anyone has a better idea.
Here are the conditions of a problem:
|------Container ------------|
| explicitHeight: 400 (or whatever)
| |
| |-------- VBox -------| |
| | percentHeight: 100 | |
| | | |
| | |-Repeater------| | |
| | | Potentially | | |
| | | a lot of stuff. | |
|--|--|---------------|---|---|
The problem is that, contrary to what I would like to happen, the VBox will ALWAYS expand to accommodate the content inside it, instead of sticking to the explicit height of its parent and creating a scroll bar.
My solution has been to hard code in a reference to the parent (or however far up the display list we need to go to find an explicitly set value as opposed to a percentage).
I've even considered using this in a utility class:
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;
}
Please tell me there's a better way.