使用Flex4容器若干技巧
查看原文:http://www.adobe.com/cn/devnet/flex/articles/flex_containers_tips.html
本文适用于正在寻找使用Flex 4容器和布局的快速参考指南的开发人员。 尽管这不一定是一个复杂问题,但这似乎是许多开发人员的挫折的来源,特别是对于那些Flex刚刚入门的开发人员。 当开发人员不知道如何正确使用容器和布局时,他们的代码常常包含过多的嵌套容器和大量毫无意义的属性。
要求具有一些关于 Flex 编程和Flash Builder的经验以便充分吸收本文的内容。
Flex 4 容器可以提供一套默认的布局:Basic、Horizontal或 Vertical以及能够基于容器内容的默认尺寸。 当进行子组件对齐操作时,注意你正在使用的容器的最小和默认尺寸。参见表 1。有些容器是可植皮的,如果真是如此,则通过在它们的皮肤上添加Spark Scroller对它们进行滚动操作。
注意Basic 布局等同于 Flex 3的绝对布局(absolute layout )。
此外,还应该注意 Spark 容器支持包含形状和FXG元素的 GraphicElement对象以及作为直接子组件的IVisualElement对象 UI 控件。 但并不是所有的MX容器均是这种情形。
名称
最小尺寸
默认尺寸
默认布局
皮肤?
滚动条
注释
Group
0x0
Content
Basic
?包含于Scroller
与Box相似但没有skin/chrome
HGroup
0x0
Content
Horizontal
?包含于Scroller
水平对齐条目;与Vbox相似但没有skin
VGroup
0x0
Content
Vertical
?包含于Scroller
垂直对齐条目;与Vbox相似但没有skin
DataGroup
0x0
Content
Basic
?包含于Scroller
携带一个数据提供者和条目渲染器
SkinnableContainer
0x0
Content
Basic
X
添加至skin
包含式样属性
BorderContainer
112x112
112x112
Basic
X
添加至skin
包含式样属性
Panel
131x127
Content
Basic
X
添加至skin
包含标题条
Application
0x0
375x500 or all space in browser
Basic
X
添加至skin
Web应用程序
NavigatorContent
0x0
Content
Basic
X
添加至skin
用于导航容器
Window
0x0
100x100
Basic
X
添加至skin
只用于AIR
WindowedApplication
OS/chrome-specific
100x375
Basic
X
添加至skin
只用于AIR
假如从Scroller对象中完全删除?width
和?height
?,则滚动条不会显示出来。参见图5。
另一个可选方法是在你的代码中将包围你的内容的Scroller和 Group作为第一个子组件进行嵌套。 然而,首选方法是在skin类中保持Scroller的独立状态。 关于滚动和容器的更多详细信息,参见?在 Spark容器中添加滚动条*。
下面是我在使用容器时遵循的若干指南:
left
、right
、top
、bottom
?、horizontalCenter
和?verticalCenter
?来确定其位置。layout
?标签或通过使用Hgroup或 Vgroup获得的 垂直或水平布局,则可以使用horizontalAlign
?、?verticalAlign
?、gap
?、?paddingTop
?、?paddingBottom
、paddingLeft
?和?paddingRight
?属性来控制子组件以及包围它们的空白符。 这些属性不能用于基本或绝对布局。参见表2。布局场景
在自身对象中使用属性
在父容器中使用属性
位于BasicLayout 绝对容器中的对象
Left, right, top, bottom
horizontalCenter, verticalCenter
??位于Vertical、Horizontal或 TileLayout 容器中的对象
??paddingLeft, paddingRight, paddingTop, paddingBottom
horizontalAlign, verticalAlign
第二个范例(参见图 9)使用?horizontalCenter="0"
?和?verticalCenter="0"
:
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <s:BorderContainer borderColor="red" borderWeight="5" width="300" height="300" horizontalCenter="0" verticalCenter="0"/></s:Application>
最后,给出需要牢记的若干通用技巧:
left/right
?用于大小调整目的,而将?horizontalCenter
?和verticalCenter
?用于定位目的。