Skip to content

网格布局

Warning

The current page still doesn't have a translation for this language.

You can read it through google translate.

网格布局(GridLayout)是SOUI中的第三种布局方式,它可以将控件排列在一个网格中,支持行列合并等高级特性。

概述

网格布局通过在容器窗口上设置 layout="gridLayout" 来启用,它具有以下特点:

  • 支持行列固定的网格布局
  • 支持行列权重分配
  • 支持单元格合并
  • 支持子窗口自适应和填充

布局属性

容器属性

  • layout="gridLayout": 指定使用网格布局

  • columnCount: 指定列数

  • rowCount: 指定行数

  • xInterval: 列间距

  • yInterval: 行间距

  • xGravity: 水平方向对齐方式

    • left
    • center
    • right
    • fill
  • yGravity: 垂直方向对齐方式

    • top
    • center
    • bottom
    • fill

子窗口属性

  • columnSpan: 跨列数

  • rowSpan: 跨行数

  • columnWeight: 列权重

  • rowWeight: 行权重

  • layout_xGravity: 单元格内水平对齐

  • layout_yGravity: 单元格内垂直对齐

代码示例

计算器布局示例:

<window layout="gridLayout" 
        columnCount="4" 
        rowCount="6" 
        xInterval="5" 
        yInterval="5" 
        xGravity="fill" 
        yGravity="fill">
  <!-- 显示区域跨4列 -->
  <edit size="0,0" 
        columnSpan="4"
        rowWeight="2"/>

  <!-- 普通按钮 -->        
  <button size="0,0" 
          text="清除"
          columnWeight="1" 
          rowWeight="1"/>

  <!-- 跨2列的0按钮 -->
  <button size="0,0"
          text="0" 
          columnSpan="2"
          columnWeight="2" 
          rowWeight="1"/>

  <!-- 跨2行的=按钮 -->
  <button size="0,0"
          text="=" 
          rowSpan="2"
          columnWeight="1"
          rowWeight="2"/>
</window>

表单布局示例:

<window layout="gridLayout" 
        columnCount="2"
        xInterval="5" 
        yInterval="5"
        xGravity="right">
  <text size="-1,-1">所在地:</text>
  <edit size="200,50" layout_xGravity="fill">广东 广州</edit>

  <text size="-1,-1">邮箱:</text>
  <edit size="200,-1" layout_xGravity="fill">xx@qq.com</edit>

  <text size="-1,-1">兴趣:</text>
  <edit size="200,-1" layout_xGravity="fill">看电影</edit>
</window>

使用场景

网格布局适用于:

  1. 需要规则网格排列的界面
  2. 计算器
  3. 键盘
  4. 日历

  5. 需要对齐的表单布局

  6. 登录界面
  7. 设置界面
  8. 数据录入界面

  9. 需要行列合并的复杂布局

  10. 报表
  11. 仪表盘
  12. 复杂表单

最佳实践

  1. 网格结构规划
  2. 预先规划行列数
  3. 合理安排跨行跨列
  4. 注意对齐要求

  5. 大小控制

  6. 固定尺寸用具体数值
  7. 自适应尺寸用-1
  8. 填充尺寸用weight

  9. 间距与对齐

  10. 使用xInterval/yInterval统一间距
  11. 使用gravity控制整体对齐
  12. 使用layout_gravity微调单个控件

  13. 权重使用

  14. columnWeight和rowWeight搭配使用
  15. 权重值合理分配
  16. 注意权重和跨格的关系