为了账号安全,请及时绑定邮箱和手机立即绑定

HarmonyOS Navigation 嵌套 Tabs 导致 Tabs 布局异常问题解决

本文介绍了在HarmonyOS应用开发过程中,遇到了Navigation嵌套Tabs导致Tabs布局异常的问题,查明了问题原因并给出了解决方案。

问题背景

在某个应用里面,需要使用HarmonyOS的Navigation和Tabs,其中,Navigation嵌套了Tabs,代码如下:

build() {
  Navigation(this.pageInfos) {

    Tabs({ barPosition: BarPosition.End }) {
      TabContent() {
      }
      .tabBar(this.tabBuilder('首页', 0, $r('app.media.home'), $r('app.media.home')))

      TabContent() {
      }
      .tabBar(this.tabBuilder('拍照', 1, $r('app.media.camera'), $r('app.media.camera')))
    }
    .width('100%')
    .height('100%')

  }.mode(NavigationMode.Stack)
  .width('100%')
  .height('100%')

}

但可以看到 Tabs 具体底部有非常大的一段空间。如下图所示。

图片描述

如果将Navigation去除,Tabs正常显示。如下图所示。

图片描述

问题原因

Tabs跟Navigation底部工具栏冲突。因为Navigation并未配置toolbarConfiguration,因此并未底部工具栏,但空间还是被底部工具栏占据了。

解决方案

方案1

将Navigation底部工具栏禁用就好。代码如下:

build() {
  Navigation(this.pageInfos) {

    Tabs({ barPosition: BarPosition.End }) {
      TabContent() {
      }
      .tabBar(this.tabBuilder('首页', 0, $r('app.media.home'), $r('app.media.home')))

      TabContent() {
      }
      .tabBar(this.tabBuilder('拍照', 1, $r('app.media.camera'), $r('app.media.camera')))
    }
    .width('100%')
    .height('100%')

  }.mode(NavigationMode.Stack)
  .width('100%')
  .height('100%')
  // 禁用底部工具栏
  .hideToolBar(true)

}

方案2

更好的方案是直接使用Navigation底部工具栏来替换掉Tabs,本质上Tabs和Navigation底部工具栏功能上有重叠。示例代码如下:

build() {
  Navigation(this.pageInfos) {
 

  }.mode(NavigationMode.Stack)
  .width('100%')
  .height('100%')
  // 禁用底部工具栏
  // .hideToolBar(true)
  .toolbarConfiguration([
    {
      value: '首页',
      icon: $r("app.media.home")
    },
    {
      value: '拍照',
      icon: $r("app.media.camera")
    }
  ])
}

效果如下:
图片描述

更多参考

加入鸿蒙生态,共建万物互联。以下是鸿蒙应用开发常用教程。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2192

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消