著名的淘宝客网站,东莞外贸网站的推广,做众筹的网站,百度推广关键词查询应用未使用setWindowLayoutFullScreen()接口设置窗口全屏布局时#xff0c;默认使能组件安全区布局。可以使用expandSafeArea属性扩展安全区域属性进行调整
扩展安全区域属性原理
布局阶段按照安全区范围大小进行UI元素布局。布局完成后查看设置了expandSafeArea的组件边界默认使能组件安全区布局。可以使用expandSafeArea属性扩展安全区域属性进行调整
扩展安全区域属性原理
布局阶段按照安全区范围大小进行UI元素布局。布局完成后查看设置了expandSafeArea的组件边界不包括margin是否和安全区边界相交。如果设置了expandSafeArea的组件和安全区边界相交根据expandSafeArea传递的属性则进一步扩大组件绘制区域大小覆盖状态栏、导航条这些非安全区域。上述过程仅改变组件自身绘制大小不进行二次布局不影响子节点和兄弟节点的大小和位置。子节点可以单独设置该属性只需要自身边界和安全区域重合就可以延伸自身大小至非安全区域内需要确保父组件未设置clip等裁切属性。配置expandSafeArea属性组件进行绘制扩展时需要关注组件不能配置固定宽高尺寸百分比除外。
背景图和视频场景
设置背景图、视频控件大小为安全区域大小并配置expandSafeArea属性。
Entry
Component
struct SafeAreaExample1 {build() {Stack() {Image($r(app.media.bg)).height(100%).width(100%).expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) // 图片组件的绘制区域扩展至状态栏和导航条。}.height(100%).width(100%)}
}滚动类场景
要求需要List滚动类组件滚动过程中元素可以和导航条重合滚动至底部时元素在导航条上面需要避让。 由于expandSafeArea不改变子节点布局因此List等滚动类组件可以调用expandSafeArea延伸List组件视图窗口大小而不改变ListItem内在布局。实现ListItem在滑动过程中显示在导航条下但滚动至最后一个时显示在导航条上。
demo
未使用全屏模式
struct Index {State message: string Hello World;build() {Column(){Image($r(app.media.test)).width(100%).height(60%).objectFit(ImageFit.Cover)Text(this.message)}.justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Center).height(100%).width(100%)}
}使用之后代码
struct Index {State message: string Hello World;build() {Column(){Image($r(app.media.test)).width(100%).height(60%).objectFit(ImageFit.Cover).expandSafeArea([SafeAreaType.SYSTEM],[SafeAreaEdge.TOP])Text(this.message)}.justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Center).height(100%).width(100%)}
}