HarmonyOS 鸿蒙的列表组件,如何比较优雅实现沉浸式效果?
HarmonyOS 鸿蒙的列表组件,如何比较优雅实现沉浸式效果?
1楼的答复是可以的,我来补充下获取底部导航条高度方法:
设置setWindowLayoutFullScreen(true)窗口全屏,然后在EntryAbility中获取并存储底部导航条高度:
onWindowStageCreate(windowStage: window.WindowStage) {
// Main window is created, set main page for this ability
hilog.info(0x0000, ‘testTag’, ‘%{public}s’, ‘Ability onWindowStageCreate’);
windowStage.loadContent(‘pages/Index’, (err, data) => {
if (err.code) {
hilog.error(0x0000, ‘testTag’, ‘Failed to load the content. Cause: %{public}s’, JSON.stringify(err) ?? ‘’);
return;
}
hilog.info(0x0000, ‘testTag’, ‘Succeeded in loading the content. Data: %{public}s’, JSON.stringify(data) ?? ‘’);
let windowClass = windowStage.getMainWindowSync()
let bottomHeight = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height
AppStorage.setOrCreate(‘bottomHeight’,px2vp(bottomHeight));
});
}
更多关于HarmonyOS 鸿蒙的列表组件,如何比较优雅实现沉浸式效果?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,实现列表组件的沉浸式效果,可以遵循以下优雅的方法:
首先,考虑使用窗口全屏布局方案。通过调用setWindowLayoutFullScreen(true)
接口,将窗口设置为全屏布局,这样列表组件可以延伸到状态栏和导航条区域,实现沉浸式效果。同时,需使用getWindowAvoidArea()
接口获取状态栏和导航条的高度,以便对列表组件进行避让处理,防止关键信息被遮挡。
其次,可以采用组件安全区方案。通过设置组件的expandSafeArea
属性,使列表组件的绘制区域扩展到安全区外,与状态栏和导航条的颜色相匹配,达到沉浸式的效果。但请注意,此方案下列表组件无法单独布局到状态栏和导航条区域。
最后,在布局时,需确保列表组件的滚动和交互体验不受影响。在滚动场景中,要对每一个嵌套的带有滚动的组件设置expandSafeArea
属性,使其视窗范围扩展至导航条,同时保持内容的可读性和操作的流畅性。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html