HarmonyOS 如何实现上面是内容下面是tabBar

想要的效果是上面是内容下面是tabBar,现在是不管怎么设置内容和tabBar都是堆叠在一起的。

HarmonyOS
2024-12-25 13:00:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

需要在tabContent外面套一层scroll可以向下滚动查看或者参考示例:

class TabBar {
  title: string
  index: number
  normalIcon: Resource
  selectIcon: Resource

  constructor(title: string, index: number, normalIcon: Resource, selectIcon: Resource) {
    this.title = title
    this.index = index
    this.normalIcon = normalIcon
    this.selectIcon = selectIcon
  }
}

@Entry
@Component
struct TabsPage {
  @State currentIndex: number = 0; // 当前tab值
  private tabsController: TabsController = new TabsController();
  private tabBars: TabBar[] = [
    new TabBar('首页', 0, $r('app.media.app_icon'), $r('app.media.app_icon')),
    new TabBar('推荐', 1, $r('app.media.app_icon'), $r('app.media.app_icon')),
    new TabBar('我的', 2, $r('app.media.app_icon'), $r('app.media.app_icon')),

  ]

  // 自定义tabs组件
  @Builder
  TabBuilder() {
    Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) {
      ForEach(this.tabBars, (item: TabBar) => {
        Column() {
          Stack() {
            Column() {
              Image(this.currentIndex === item.index ? item.selectIcon : item.normalIcon)
                .size({ width: 25, height: 25 })
              Text(item.title)
                .fontColor(this.currentIndex === item.index ? '#000' : '#999')
                .fontSize(12)
            }
            .width(60)
            .onClick(() => {
              // 更新被选中的tabBar下标
              this.currentIndex = item.index;
            })
          }
        }
      })
    }.height(60)
  }

  build() {
    Column() {
      Tabs({ barPosition: BarPosition.End, index: this.currentIndex, controller: this.tabsController }) {
        TabContent() {
          Column() {
          }
          .width('100%')
          .backgroundColor(Color.Gray)
        }

        TabContent() {
          Column() {
          }
          .width('100%')
          .backgroundColor(Color.Red)
        }

        TabContent() {
          Column() {
          }
          .width('100%')
          .backgroundColor(Color.Blue)
        }
      }.backgroundColor(Color.Pink).height('95%')
      this.TabBuilder()
    }.width('100%').height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-25 15:21:35
相关问题
视频播放黑屏,下面代码
9631浏览 • 1回复 待解决
HarmonyOS 如何实现手势密码功能
663浏览 • 1回复 待解决
SDK tools 没有内容怎么回事?
605浏览 • 1回复 待解决
请问针对下面场景描述如何实现
281浏览 • 1回复 待解决
ArkTS 的异步编程模型如何实现的?
269浏览 • 0回复 待解决
鸿蒙系统如何实现分布式的?
13248浏览 • 2回复 待解决
AComponent, BDialog, CComponent
375浏览 • 1回复 待解决
Redis缓存分布式锁如何实现的?
3261浏览 • 1回复 待解决
Flutter 如何判断HarmonyOS环境
233浏览 • 1回复 待解决