HarmonyOS 鸿蒙Next SideBarContainer(侧边栏)组件的showSideBar问题解决

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next SideBarContainer(侧边栏)组件的showSideBar问题解决

偶然间发现SideBarContainer的showSideBar属性添加animation属性后,触发结果相反的问题。

如下:

cke_1992.png

当在showSideBar属性后添加animation属性时,showSideBar的值为false,侧边栏出现,为true时,侧边栏隐藏。

解决方式:

1.不采用动画,showSideBar正常。

2.使用animateTo显示动画调整showSideBar的值,触发结果正常。

以下为示例代码:

import { promptAction } from ‘@kit.ArkUI’

@Entry @Component struct SideBarContainerTest { @State @Watch(‘see’) sideBarVisible: boolean = false

see() { promptAction.showToast({ message: this.sideBarVisible + ‘’ }) }

build() { SideBarContainer(SideBarContainerType.Overlay) { Column() { Text(“侧边栏区域”) .width(“100%”) .height(“100%”) .fontSize(30) .textAlign(TextAlign.Center)

  }
  .width(<span class="hljs-number"><span class="hljs-number">10</span></span>)
  .height(<span class="hljs-string"><span class="hljs-string">"100%"</span></span>)
  .backgroundColor(<span class="hljs-string"><span class="hljs-string">"#aabbcc"</span></span>)

  Column() {
    Text(<span class="hljs-string"><span class="hljs-string">"侧边栏区域"</span></span>)
      .width(<span class="hljs-string"><span class="hljs-string">"100%"</span></span>)
      .height(<span class="hljs-string"><span class="hljs-string">"100%"</span></span>)
      .fontSize(<span class="hljs-number"><span class="hljs-number">30</span></span>)
      .textAlign(TextAlign.Center)
  }
  .width(<span class="hljs-string"><span class="hljs-string">"100%"</span></span>)
  .height(<span class="hljs-string"><span class="hljs-string">"100%"</span></span>)
  .backgroundColor(<span class="hljs-string"><span class="hljs-string">"#bbccaa"</span></span>)
  .onClick(() =&gt; {
    animateTo({ duration: <span class="hljs-number"><span class="hljs-number">300</span></span> }, () =&gt; {
      <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.sideBarVisible = !<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.sideBarVisible
    })
  })
}
.width(<span class="hljs-string"><span class="hljs-string">'100%'</span></span>)
.height(<span class="hljs-string"><span class="hljs-string">'100%'</span></span>)
.showSideBar($$<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.sideBarVisible)
<span class="hljs-comment"><span class="hljs-comment">// .animation({ duration: 300 })</span></span>
.showControlButton(<span class="hljs-literal"><span class="hljs-literal">false</span></span>)

} }

1 回复

关于HarmonyOS 鸿蒙Next SideBarContainer(侧边栏)组件的showSideBar问题,以下是一些专业的解答:

SideBarContainer组件是一个提供侧边栏显示和隐藏功能的容器,它通过子组件定义侧边栏和内容区。在使用该组件时,showSideBar属性用于设置是否显示侧边栏。

  1. 正确使用showSideBar属性

    • showSideBar属性是一个布尔值,当设置为true时显示侧边栏,设置为false时隐藏侧边栏。
    • 必须使用$$装饰来绑定变量,否则属性设置可能无效。例如:.showSideBar($$this.sideBarVisible)
  2. 动画效果与showSideBar属性的冲突

    • 在某些情况下,如果在showSideBar属性后添加动画属性,可能会触发与预期相反的结果。例如,showSideBar为false时侧边栏出现,为true时侧边栏隐藏。
    • 若遇到此类问题,可以尝试不使用动画,或者使用animateTo函数来显示动画并调整showSideBar的值。
  3. 子组件的要求

    • SideBarContainer组件必须且仅包含两个子组件,第一个表示侧边栏,第二个表示内容区。
    • 子组件类型可以是系统组件和自定义组件,但不支持渲染控制类型(如if/else、ForEach等)。

如果以上解答无法完全解决您的问题,可能是由于具体实现细节上的差异。此时,您可以参考鸿蒙官方文档或联系官网客服以获取更详细的帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部