【Tab控件】HarmonyOS 鸿蒙Next barOverlap效果太差

【Tab控件】HarmonyOS 鸿蒙Next barOverlap效果太差

barOverlap效果太差
问题点:

  • 模糊效果很奇怪(TabContent内容滚动时闪烁,看不出背景UI的轮廓),且参数貌似不可调(模糊半径等)(demo中的Tab1)

复现demo :

@Entry
@Component
export struct BarBackgroundColorTest {
  private controller: TabsController = new TabsController();
  @State barOverlap: boolean = true;
  @State barBackgroundColor: string = '#77FFFFFF';
  scroller: Scroller = new Scroller();

  build() {
    Column() {
      Button("barOverlap变化")
        .width('100%')
        .margin({ bottom: '12vp' })
        .onClick((event?: ClickEvent) => {
          this.barOverlap = !this.barOverlap;
        });

      Tabs({
        barPosition: BarPosition.Start,
        index: 0,
        controller: this.controller,
      }) {
        TabContent() {
          Scroll(this.scroller) {
            Column() {
              Text(`barOverlap ${this.barOverlap}`)
                .fontSize(16)
                .margin({ top: this.barOverlap ? '56vp' : 0 });
              
              for (let i = 0; i < 10; i++) {
                Text(`barBackgroundColor ${this.barBackgroundColor}`)
                  .fontSize(16);
              }
            }
            .width('100%')
            .backgroundColor(Color.Pink)
          }
          .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
          .scrollBar(BarState.On) // 滚动条常驻显示
          .scrollBarColor(Color.Gray) // 滚动条颜色
          .scrollBarWidth(10) // 滚动条宽度
          .friction(0.6)
          .edgeEffect(EdgeEffect.None);
        }

        TabContent() {
          Column() {
            Text(`barOverlap ${this.barOverlap}`)
              .fontSize(16)
              .margin({ top: this.barOverlap ? '56vp' : 0 });
            Text(`barBackgroundColor ${this.barBackgroundColor}`)
              .fontSize(16);
          }
          .width('100%')
          .height('100%')
          .backgroundColor(Color.Red);
        }
      }
      .vertical(false)
      .barMode(BarMode.Fixed)
      .height('60%')
      .barOverlap(this.barOverlap)
      .scrollable(false)
      .animationDuration(10)
      .barBackgroundColor(this.barBackgroundColor);
    }
    .height(300)
    .padding({ top: '24vp', left: '24vp', right: '24vp' });
  }
}

更多关于【Tab控件】HarmonyOS 鸿蒙Next barOverlap效果太差的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以尝试使用barBackgroundBlurStyle属性来设置TabBar的背景模糊材质,也可以规避部分闪烁效果,但模糊半径等目前还不支持调节。

可以参考下面的文档链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-tabs-V5# 属性

更多关于【Tab控件】HarmonyOS 鸿蒙Next barOverlap效果太差的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题中提到的“HarmonyOS 鸿蒙Next barOverlap效果太差”的问题,以下是专业且直接的回答:

在HarmonyOS中,barOverlap效果通常用于处理状态栏或导航栏与内容区域的重叠问题。如果效果不理想,可能是由于以下几个原因:

  1. 布局配置不当:检查你的布局文件,确保使用了正确的布局参数来控制元素的重叠。例如,使用fitsSystemWindows属性来控制是否让系统窗口(如状态栏)留出空间。

  2. 主题或样式冲突:确认你的应用主题或样式是否与HarmonyOS的默认行为兼容。有时候,自定义主题可能会覆盖或干扰系统默认的重叠效果。

  3. 系统版本差异:不同版本的HarmonyOS可能在处理barOverlap时存在差异。确保你的应用已经针对当前目标系统版本进行了优化。

  4. 代码实现问题:如果你在代码中动态控制重叠效果,检查相关逻辑是否正确。确保在适当的时机调整布局参数。

如果上述检查都无法解决问题,可能需要更深入地分析应用的布局和代码实现。此外,也可以考虑查看HarmonyOS的官方文档或示例代码,以获取更多关于如何正确实现barOverlap效果的指导。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部