HarmonyOS 鸿蒙Next全屏状态栏未设顶部距离,List嵌套tabs滚动至顶部吸顶后无法点击tab,最新版本
HarmonyOS 鸿蒙Next全屏状态栏未设顶部距离,List嵌套tabs滚动至顶部吸顶后无法点击tab,最新版本
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-window-V13
//在entryability.ets文件中添加
//设置窗口全屏
let windowClass=windowStage.getMainWindowSync()
AppStorage.setOrCreate(‘windowClass’,windowClass)
windowClass.setWindowLayoutFullScreen(true)
index.ets
import WindowManager from ‘…/Utils/WindowManager’
struct Index_231204142752067 {
@State height1: number = 0
@StorageProp(‘statusBarHeight’) statusBarHeight: number = 20
@StorageProp(‘bottomRectHeight’) bottomRectHeight: number = 0
onPageShow(): void {
// WindowManager.enableFullScreen()
WindowManager.settingStatusBarLight(’#ffffff’)
// WindowManager.settingStatusBarColor(’#ffffff’)
}
build() {
Stack() {
// 主内容
Scroll() {
Column() {
Row() {
}
.backgroundColor(Color.Pink)
.height(300)
.width(‘100%’)
.onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
if (isVisible) {
this.height1 = 0
}
if (!isVisible && currentRatio <= 0.0) {
this.height1 = this.statusBarHeight
WindowManager.settingStatusBarLight(’#000000’)
}else{
WindowManager.settingStatusBarLight(’#ffffff’)
this.height1=0
}
})
// 主内容
ScrollMainArea({ height1: this.height1 })
}.width(“100%”)
}
.edgeEffect(EdgeEffect.None)
.friction(0.6)
.backgroundColor(’#ffffff’)
.scrollBar(BarState.Off)
.width(‘100%’)
.height(‘100%’)
}
}
}
struct ScrollMainArea {
private scrollerForList: Scroller = new Scroller();
@State arr: number[] = [1, 2, 3, 4, 5, 6]
@State currentIndex: number = 0
@State fontColor: string = ‘#182431’
@State selectedFontColor: string = ‘#007DFF’
private controller: TabsController = new TabsController()
@Prop height1: number
tabBuilder(index: number, name: string) {
Column() {
Text(name)
.fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
.fontSize(16)
.fontWeight(this.currentIndex === index ? 500 : 400)
.lineHeight(22)
.margin({ top: 17, bottom: 7 })
Divider()
.strokeWidth(2)
.color(’#007DFF’)
.opacity(this.currentIndex === index ? 1 : 0)
}.width(‘100%’)
}
listCard() { .backgroundColor(Color.White).height(200).width(“100%”).borderRadius(12)
}
build() {
Column() {
Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {
TabContent() {
List({ space: 10, scroller: this.scrollerForList }) {
ListItemGroup() {
ForEach(this.arr, (item: number) => {
ListItem() {
Text(“item” + item).fontSize(16)
}.listCard()
}, (item: string) => item)
}
}
// .sticky(StickyStyle.Header)
.width(“100%”)
.height(‘100%’)
.edgeEffect(EdgeEffect.None)
.nestedScroll({ scrollForward: NestedScrollMode.PARENT_FIRST, scrollBackward: NestedScrollMode.SELF_FIRST })
}.tabBar(this.tabBuilder(0, ‘green’))
TabContent() {
Column().width(‘100%’).height(‘100%’).backgroundColor(’#007DFF’)
}.tabBar(this.tabBuilder(1, ‘blue’))
TabContent() {
Column().width(‘100%’).height(‘100%’).backgroundColor(’#FFBF00’)
}.tabBar(this.tabBuilder(2, ‘yellow’))
TabContent() {
Column().width(‘100%’).height(‘100%’).backgroundColor(’#E67C92’)
}.tabBar(this.tabBuilder(3, ‘pink’))
}
.vertical(false)
.barMode(BarMode.Fixed)
.barWidth(360)
.barHeight(56)
.animationDuration(400)
.onChange((index: number) => {
this.currentIndex = index
})
.width(‘100%’)
.height(‘100%’)
.padding({ top: this.height1 })
}.width(‘100%’).height(‘100%’)
}
}
新建工具类 文件夹Utils /WindowManager.ets
import { window } from ‘@kit.ArkUI’
export default class WindowManager{
static settingStatusBarLight(color:string) {
let win: window.Window = AppStorage.get(‘windowClass’)!
win.setWindowSystemBarProperties({ statusBarContentColor: color }) //设置安全区字体颜色为白色
}
}
更多关于HarmonyOS 鸿蒙Next全屏状态栏未设顶部距离,List嵌套tabs滚动至顶部吸顶后无法点击tab,最新版本的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next全屏状态栏未设顶部距离,以及List嵌套Tabs滚动至顶部吸顶后无法点击Tab的问题,以下是一些解决方案:
-
状态栏顶部距离设置:
- 使用
setWindowLayoutFullScreen
方法控制沉浸式状态栏的显示与隐藏。 - 通过
setWindowSystemBarProperties
方法设置状态栏的背景颜色和文字颜色,确保状态栏信息清晰可见。 - 鸿蒙系统自带上下安全边距,可获取并存储安全边距高度,自定义安全区域内容,确保状态栏显示正常。
- 使用
-
List嵌套Tabs滚动问题:
- 检查Tabs组件的嵌套层级,避免不必要的滑动冲突。
- 考虑调整Tabs组件的嵌套结构,例如将内层Tabs改为其他类型的组件。
- 在内层Tabs的滑动边缘添加自定义手势处理逻辑,当检测到滑动到边缘时,根据滑动方向切换外层Tabs。
如果上述方法无法解决问题,可能是由于系统或应用的特定配置导致的。建议检查应用的日志输出,查找可能的错误信息,并确认使用的HarmonyOS SDK版本与设备系统版本兼容。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。