能否不使用CSS仅通过View.xml将GenericTile控件居中到屏幕中央?
解决方案
完全可以仅通过View.xml配置实现屏幕水平+垂直双方向居中,无需编写任何自定义CSS,核心是用SAPUI5内置的FlexBox控件配合标准属性,解决父容器高度未撑满的问题。
之前尝试FlexBox仅能实现基础居中、无法垂直对齐到屏幕中线的核心原因:默认状态下FlexBox高度自适应内容,且Page控件默认开启滚动模式、不会自动占满整个视口高度,垂直居中规则仅在FlexBox自身高度范围内生效,自然无法对齐到屏幕正中间。
具体实现代码
直接在XML视图中编写如下结构即可,所有属性均为UI5官方标准API,兼容所有支持OData v4的UI5版本:
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" > <!-- 页面配置:关闭顶部页眉、关闭滚动,让页面占满整个视口高度 --> <Page showHeader="false" enableScrolling="false"> <!-- 弹性容器配置:撑满父容器全部宽高,开启水平+垂直双向居中 --> <FlexBox fitContainer="true" justifyContent="Center" alignItems="Center" > <!-- 原有GenericTile控件,正常绑定OData v4模型即可 --> <GenericTile header="事件数据" subheader="OData v4服务返回" > <tileContent> <TileContent> <content> <!-- 替换为你实际的OData绑定内容 --> <NumericContent value="{model>/eventCount}" scale="条" /> </content> </TileContent> </tileContent> </GenericTile> </FlexBox> </Page> </mvc:View>
配置说明
- 如果需要保留顶部导航栏,把Page的
showHeader属性改为true即可,此时GenericTile会自动在导航栏以下的可用页面区域正中间,不会被导航栏遮挡 fitContainer="true"是核心配置,作用是让FlexBox自动撑满父容器(Page)的100%宽高,不需要手动设置高度样式justifyContent="Center"控制子元素在FlexBox主轴(默认水平方向)居中,alignItems="Center"控制子元素在交叉轴(默认垂直方向)居中
内容的提问来源于stack exchange,提问作者etan
相关产品推荐
相关产品推荐

