SAP UI5 应用里 FlexBox 控件的设计原理

简介: SAP UI5 应用里 FlexBox 控件的设计原理

sap.m.FlexBox 控件为 flexible box layout 构建容器。VBox 控件为垂直的框布局(vertical flexible box layout)构建容器。 VBox 是一种使用的控件,因为它只是一个定制化的 FlexBox 控件。


VBox 包含 items 聚合,从 FlexBox 继承而来。

HBox 控件为水平框布局(horizontal flexible box layout)构建容器。

HBox 有一个名叫 LayoutData 的聚合,用来定义此控件在布局内使用时的布局约束(layout constraints).

LayoutData 类是 typed classes,必须与嵌入布局相匹配。

e8b20d2468f2287e0bd937cb98c2e62a.png

删除这段代码之后,应用的布局就被破坏了:

7f782d45b6bee72f72373f5fc7bdfbd7.png

e2b595fb1ea4b1daa96fabde5d562f1f.png

两个按钮所在的区域和 3D Viewer 显示的区域混淆在一起了:


321a216a71a8675c2e997cec5a0d041f.png

growFactor:确定剩余可分配空间时弹性项目(flex item)的灵活性(flexibility)。


一些影响布局的属性需要在 FlexBox 控件中设置。其他属性可以附加到通过 layoutData 聚合放置在 FlexBox 内的控件。例如,布局方向在 FlexBox 中设置如下:

var oMyFlexbox = new sap.m.FlexBox({
  items: [
    new sap.m.Button({text: "Button 1"}),
    new sap.m.Button({text: "Button 2"})
  ],
  direction: "Column"
});


最后的效果:

d4babea6a43bcc68e06bc5797af24cb2.png

我们也可以通过 order 属性显式指定按钮的顺序:

var oMyFlexbox = new sap.m.FlexBox({
  items: [
    new sap.m.Button({
      text: "Button 1",
      layoutData: new FlexItemData({order: 2})
    }),
    new sap.m.Button({text: "Button 2"})
  ]
});


上面的代码,虽然 Button 1 先出现,但其通过 layoutData 设置的 order 属性值为 2,因此出现在 Button 2 之后:

8a24eea7da73af0dff067f23aa569a43.png

FlexBox 控件是 CSS 中 flexible box layout 的包装器。控件呈现器(control renderer)在适当的 HTML 元素上设置 CSS 属性(包括必要时的前缀版本)。 实际的布局是由浏览器完成的。

FlexBox 布局具有子元素的布局方向。 默认方向是行,行在阅读方向上水平排列。 这定义了主轴。 这种情况下的横轴是垂直的。

开发人员可以将布局方向属性更改为 Column,这将导致垂直主轴和水平交叉轴。

相关文章
|
4月前
|
API
在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
【2月更文挑战第28天】 在阿里云RPA中,你可以使用"SetForegroundWindow"函数来将SAP控件置顶
74 1
|
4月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
20天前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
3月前
|
存储 开发框架 JavaScript
深入探讨Flutter中动态UI构建的原理、方法以及数据驱动视图的实现技巧
【6月更文挑战第11天】Flutter是高效的跨平台移动开发框架,以其热重载、高性能渲染和丰富组件库著称。本文探讨了Flutter中动态UI构建原理与数据驱动视图的实现。动态UI基于Widget树模型,状态变化触发UI更新。状态管理是关键,Flutter提供StatefulWidget、Provider、Redux等方式。使用ListView等可滚动组件和StreamBuilder等流式组件实现数据驱动视图的自动更新。响应式布局确保UI在不同设备上的适应性。Flutter为开发者构建动态、用户友好的界面提供了强大支持。
65 2
|
1月前
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
13 0
|
4月前
|
JavaScript 前端开发
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
|
4月前
|
Web App开发 开发框架 前端开发
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
|
4月前
|
前端开发 Java Android开发
Android UI底层绘制原理
Android UI底层绘制原理
34 0
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
|
4月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍