跳转至

锚点布局

SOUI的锚点布局是一种高度灵活的布局方式,它通过指定控件相对于父窗口或兄弟窗口的位置来实现布局。

概述

  • 锚点布局是SOUI中最基本和强大的布局方式
  • 通过 pos 属性来指定控件的位置和大小
  • 支持相对于父窗口、相对于兄弟窗口的位置定位
  • 支持百分比定位、中心点定位等多种定位方式
  • 可以和其他布局方式混合使用

布局属性

pos 属性

pos 属性是锚点布局中最重要的属性,它可以指定 4 个值或 2 个值:

  • 4 个值时,分别代表控件的 left、top、right、bottom
  • 2 个值时,代表控件的 x、y,需要配合其他属性使用

pos 支持以下特殊标记:

标记 说明
| 相对于父窗口的中心,如 |-10 表示父窗口中心向左偏移 10 像素
% 相对于父窗口的百分比位置,如 %40 表示父窗口 40% 位置
[ 相对于前一兄弟窗口,用于 X 时参考其 right,用于 Y 时参考其 bottom
] 相对于后一兄弟窗口,用于 X 时参考其 left,用于 Y 时参考其 top
{ 相对于前一兄弟窗口,用于 X 时参考其 left,用于 Y 时参考其 top
} 相对于后一兄弟窗口,用于 X 时参考其 right,用于 Y 时参考其 bottom
@ 指定控件的大小,只能用于 width/height,如 @100 表示宽/高为 100

示例:

<!-- 占满整个父窗口 -->
<window pos="0,0,-0,-0"/>

<!-- 距离父窗口四边均缩进10像素 -->  
<window pos="10,10,-10,-10"/>

<!-- 宽高分别为150,30的按钮 -->
<button pos="10,150,@150,@30">button1</button>

<!-- 相对前一兄弟窗口右边5像素 -->
<window pos="[5,0,@100,@30"/>

size/width/height 属性

用于指定控件的大小:

<!-- 使用size指定宽高 -->
<window size="100,30"/> 

<!-- 使用width/height分别指定 -->
<window width="100" height="30"/>

支持的值类型:

  • full: 与父窗口客户区大小相等
  • -1: 根据内容自动计算大小
  • 非负整数: 直接指定大小

offset/pos2type 属性

用于实现控件的偏移定位:

<!-- 向左上偏移一个窗口大小单位 -->
<window offset="-1,-1"/>

使用场景

锚点布局适用于:

  1. 需要精确控制控件位置和大小的场景
  2. 窗口需要自适应调整大小的场景
  3. 控件之间有依赖位置关系的场景
  4. 需要百分比定位的场景

最佳实践

  1. 对于固定大小的布局,可以使用绝对坐标

  2. 对于自适应布局,推荐使用:

  3. 百分比定位
  4. 相对兄弟窗口定位
  5. 中心点定位

  6. 合理使用 size/width/height:

  7. 固定大小使用具体数值
  8. 内容自适应使用 -1
  9. 撑满父容器使用 full

  10. 注意避免布局循环引用

  11. 使用 [,],{,} 这些相对定位时要注意引用关系
  12. 最好保持单向引用