HarmonyOS 鸿蒙Next关于hdstabs的另一个问题

HarmonyOS 鸿蒙Next关于hdstabs的另一个问题 是不是用了hdstabs+悬浮效果,就无法支持通过长按来修改设定启动页?只有自定义的导航栏才行?

14 回复

开发者您好,针对您的问题经测试可以通过自定义TabBar实现长按事件:

//自定义TabBar构建函数
@Builder
customTabBarBuilder(item: MenuItem) {
  Column() {
    Text(item.label).fontSize(14)
  }
  .width('100%')
  .height('100%')
  .justifyContent(FlexAlign.Center)
  .gesture(
    LongPressGesture({ duration: 1000 })
      .onAction((event: GestureEvent) => {
        console.error(`长按来源normalTab: ${item.label}`);
      })
  )
}
TabContent() {
  //...
}
.tabBar(this.customTabBarBuilder(item))

测试结果:

cke_3769.png

更多关于HarmonyOS 鸿蒙Next关于hdstabs的另一个问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


自定义的我知道能支持,我的问题是呃, HDSTABS不支持对吧?,

而且这个办法,我已经应用在自定义导航栏上,还配置了设置项,但是重启后依旧在加载第一个页面

您未提供HTML内容,请补充后再尝试转换。

图片

这个效果就很明显了吧,HDS绝对没有假。

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

实践出真知

图片

代码的页面效果,长按是可以触发事件的。

这么神奇啊,我问了华为的智能AI的。他都说HDSTABS这种组件加上悬浮效果之后,是不能够支持长按的,

AI也是有解决方案在网上发出来,它才抓取了才回答的。,

🤣🤣🤣,

hdstabs在HarmonyOS Next中需注意数据同步与状态管理。动态增删tab后调用TabsController的notifyDataChange()刷新布局;切换定位使用changeIndex();避免在TabBuilder内声明@State引发重复构建。如遇内容空白,检查tabContent是否绑定正确组件ID。

在 HarmonyOS NEXT 中,HDSTabs 组件的悬浮效果(sticky 属性)确实会改变内部布局逻辑,导致长按菜单的触发区域或手势识别受到影响。系统默认的启动页修改通常依赖导航栏区域的长按手势,但 HDSTabs 悬浮时其自身渲染层级和事件响应与系统原生导航栏不同,容易造成手势冲突或失效。因此,要实现长按修改启动页的功能,一般需要开发者自行实现自定义导航栏,并手动处理长按事件与页面栈操作,这是更可靠的方案。简言之,HDSTabs 的悬浮模式不支持该系统的内置编辑功能,必须改用自定义导航栏。

回到顶部