動態

詳情 返回 返回

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")
    }
  ])
}

效果如下:

更多參考

加入鴻蒙生態,共建萬物互聯。以下是鴻蒙應用開發常用教程。

  • 本文同步至:https://waylau.com/nested-tabs-in-harmonyos-navigation/
  • 《跟老衞學HarmonyOS開發》開源免費教程, https://github.com/waylau/harmonyos-tutorial
  • 《跟老衞學AI大模型開發》開源免費教程, https://github.com/waylau/ai-large-model-tutorial/
  • 《跟老衞學倉頡編程語言開發》開源免費教程, https://github.com/waylau/cangjie-programming-language-tutorial
  • 《鴻蒙HarmonyOS手機應用開發實戰》(清華大學出版社)
  • 《鴻蒙HarmonyOS應用開發入門》(清華大學出版社)
  • “鴻蒙零基礎快速實戰-仿抖音App開發(ArkTS版)”(https://coding.imooc.com/class/843.html)
  • 《鴻蒙HarmonyOS應用開發從入門到精通(第2版)》(北京大學出版社)
  • 《鴻蒙之光HarmonyOS NEXT原生應用開發入門》(清華大學出版社)
  • “HarmonyOS NEXT+AI大模型打造智能助手APP(倉頡版)”(https://coding.imooc.com/class/927.html)
  • “HarmonyOS 6 AI應用開發”(https://edu.51cto.com/course/39601.html)

Add a new 評論

Some HTML is okay.