HarmonyOS 鸿蒙Next侧边栏控件SideBarContainer,设置动画属性后首次点击显示,没有正常显示出来

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next侧边栏控件SideBarContainer,设置动画属性后首次点击显示,没有正常显示出来

侧边栏控件SideBarContainer,设置动画属性后首次点击设置显示,没有正常显示出来,导致后续关联的isShow属性的状态与实际侧边栏是否显示的状态不一致。

820f72fd-33b8-4da6-848a-5b8b6af7159e.gif

代码地址

HMOS_Drawer

4 回复
试试这个Demo

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) arr: number[] = [1, 2, 3]
[@State](/user/State) current: number = 1
[@State](/user/State) showSideBar: boolean = false
[@State](/user/State) showFlag: Visibility = Visibility.Hidden;

// 延迟关闭侧边栏,让自定义的出场动画显示
cancel() {
this.showFlag = Visibility.Hidden
setTimeout(() => {
this.showSideBar = !this.showSideBar
}, 1000)
}

build() {
SideBarContainer(SideBarContainerType.Overlay) {
Column() {
ForEach(this.arr, (item: number) => {
Column({ space: 5 }) {
Text("Index0" + item )
.fontSize(25)
.fontColor(this.current === item ? '#0A59F7' : '#999')
.fontFamily('source-sans-pro,cursive,sans-serif')
}

.onClick(() => {
this.current = item
})
}, (item: string) => item)
}
.visibility(this.showFlag)
.transition(TransitionEffect.OPACITY.animation({ duration: 1000 })
.combine(TransitionEffect.translate({ x: 100 })))
.width('100%')
.justifyContent(FlexAlign.SpaceEvenly)
.backgroundColor(Color.Pink)

Column() {
Button('打开侧边栏').onClick(() => {
this.showFlag = Visibility.Visible
this.showSideBar = true
}
)
Button('关闭侧边栏').onClick(() => {
this.cancel()
})
}
}
.divider(null)
.sideBarPosition(SideBarPosition.End)
.showSideBar(this.showSideBar)
.showControlButton(false)
.sideBarWidth(150)
.minSideBarWidth(50)
.maxSideBarWidth(300)
.minContentWidth(0)
.onChange((value: boolean) => {
console.info('status:' + value)
})
}
}
你把
.animation({ duration: 500, iterations: 1 })

这行代码删掉试试

加这个目的就是为了,侧边栏显示能够丝滑一点,没有动画看起来有点生硬

针对HarmonyOS 鸿蒙Next侧边栏控件SideBarContainer设置动画属性后首次点击显示不正常的问题,可能是动画设置或组件状态初始化有误。请检查以下几点:

  1. 确保动画属性的设置正确无误,如动画时长、延迟等。
  2. 检查侧边栏控件的初始状态(如是否默认隐藏),确保与动画逻辑相匹配。
  3. 验证是否有其他样式或布局设置干扰了侧边栏的显示。

如果问题依旧没法解决,请加我微信,我的微信是itying888,以便进一步分析并提供帮助。

回到顶部