布局 (Layouts)¶
在 Kanzi 中有三种类型的布局:
|
基于其子节点的位置和大小的布局,例如 Flow Layout、Grid Layout、Stack Layout 和 Trajectory Layout 节点。例如,当内容量动态变化时,这些布局非常有用。 |
|
用于显示特定内容和通常将内容居中放置的内容控件,例如 Image 节点和 Button 节点。 |
|
用作容器以便将子节点分组的绝对定位控件,例如 Viewport 2D 和 Empty Node 2D 节点。 |
您可以使用布局节点,相对于应用程序屏幕和其他节点来定位节点。布局包括对齐、边距和布局尺寸属性,您既可以针对某个节点专门定义这些属性,也可以将其定义为由特定布局容器施加于子节点的通用规则。
请参阅 布局控制节点。
通用布局属性¶
要在您的 Kanzi 应用程序中定位项目,您可以使用这些变换类型:
布局变换是在应用布局通道前对项进行变换。
渲染变换是在应用布局通道后、渲染前对项进行变换。
Kanzi 在应用布局变换后应用渲染变换,并且不影响布局计算。例如,这允许您在布局中对节点进行动画处理,而不会导致布局重新计算。
布局控制节点,例如 Stack Layout 和 Grid Layout 节点,对其所有直接子节点应用其自身的变换,而这些子节点则根据其自身的子节点、布局变换、边距和对齐方式定义其自身的布局。
对齐定义了布局的重心。例如,将 Horizontal Alignment 属性设置为 Right 以将节点对齐到其父布局的右侧。通过将对齐属性设置为 Stretch,节点会拉伸到其父布局的尺寸。使用 Content Stretch 属性来指定布局如何处理其内容。
边距强制对象相对于其父布局的边框进行间距。例如,设置 Horizontal Margin 属性以设置节点左右两侧相对于其父布局的间距。
布局属性会覆盖节点的边界框大小。默认布局大小由节点的大小决定,基于其边界框和边距。
例如,沿 x 轴方向设置的 Stack Layout 节点根据其尺寸(边界框)将其两个子节点彼此相邻放置。通过使用 Layout Width 属性,您可以覆盖边界框的宽度:小于节点大小的值会使节点重叠,而大于节点大小的值会扩展两个节点之间的空间。
完成所有布局任务后,Kanzi 会应用来自父节点的最终变换。如果 Screen 节点下的 RootNode 是 Viewport 2D 或 Empty Node 2D,则其布局具有特殊规则:除非由布局属性定义,否则它会继承所定义的屏幕尺寸。