HarmonyOS 鸿蒙Next 自定义tabs设置背景颜色,有白色细线异常显示

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义tabs设置背景颜色,有白色细线异常显示

自定义tabs设置背景颜色,有白色细线异常显示

2 回复
参考demo
import BeginnerModeTab from '../components/tabs/BeginnerModeTab'
import ProModeTab from '../components/tabs/ProModeTab'
import AverageLawTab from '../components/tabs/AverageLawTab'
import MetronomeTab from '../components/tabs/MetronomeTab'
let storage = LocalStorage.getShared()
interface beginnerModeTabProps {
  phoneticName: string
}
[@Entry](/user/Entry)(storage)
[@Component](/user/Component)
struct Index {
  // bottomRectHeight: string = AppStorage.get<number>('bottomRectHeight') + 'px';
  [@LocalStorageLink](/user/LocalStorageLink)('phoneticName') phoneticName: string = 'D';
  [@State](/user/State) currentIndex: number = 0; // 当前tab值
  private tabsController: TabsController = new TabsController();
  // 自定义tabs
  [@Builder](/user/Builder)
  TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {
    Column() {
      Image(this.currentIndex === targetIndex ? normalImg : selectedImg)
        .size({ width: 25, height: 25 })
      Text(title)
        .fontColor(this.currentIndex === targetIndex ? '#fff' : '#999')
        .fontSize(12)
    }
    .width('100%')
    .height(50)
    .justifyContent(FlexAlign.Center)
    .backgroundColor('#78c371') // 设置Tabs组件背景颜色
    .borderWidth(0) // 移除边框宽度
    .padding(0) // 确保没有多余的填充
    .margin(0) // 确保没有多余的边距
    .onClick(() => {
      this.currentIndex = targetIndex;
      this.tabsController.changeIndex(this.currentIndex);
    })
  }
  build() {
    Tabs({ barPosition: BarPosition.End, index: this.currentIndex, controller: this.tabsController }) {
      // 初学模式
      TabContent() {
        Column() {
          BeginnerModeTab({
            // test: 'null'
            phoneticName: this.phoneticName
          })
        }
        .width('100%')
        .height('100%')
        .backgroundColor('#fff')
        .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) // 图片组件的绘制区域扩展至状态栏和导航条。
      }
      .tabBar(this.TabBuilder('初学模式', 0, $r('app.media.icon_mode_junior_sel'), $r('app.media.icon_mode_junior')))
      // 专业模式
      TabContent() {
        Column() {
          ProModeTab()
        }
        .width('100%')
        .height('100%')
        .backgroundColor('#3a3a3a')
        .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
      }
      .tabBar(this.TabBuilder('专业模式', 1, $r('app.media.icon_mode_pro_sel'), $r('app.media.icon_mode_pro')))
      // 十二平均律
      TabContent() {
        Column() {
          AverageLawTab()
        }
        .width('100%')
        .height('100%')
        .backgroundColor('#3a3a3a')
        .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
      }
      .tabBar(this.TabBuilder('十二平均律', 2, $r('app.media.icon_mode_average_sel'),
        $r('app.media.icon_mode_average')))
      // 节拍器
      TabContent() {
        Column() {
          // 添加你的内容
          MetronomeTab()
        }
        .width('100%')
        .height('100%')
        .backgroundColor('#fff')
        .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
      }
      .tabBar(this.TabBuilder('节拍器', 3, $r('app.media.icon_mode_metronome_sel'),
        $r('app.media.icon_mode_metronome')))
    }
    .backgroundColor('#78c371') // 确保Tabs组件背景颜色为绿色
    .borderWidth(0) // 确保Tabs组件没有边框
    .padding(0) // 确保Tabs组件没有多余的填充
    .margin(0) // 确保Tabs组件没有多余的边距
    .scrollable(false)
    .animationDuration(0)
    .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) // 图片组件的绘制区域扩展至状态栏和导航条。
    // .margin({ top: this.bottomRectHeight, bottom: this.bottomRectHeight }) // 此处margin具体数值在实际中应与导航条区域高度保持一致
  }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next 自定义tabs设置背景颜色,有白色细线异常显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next自定义tabs设置背景颜色后出现白色细线异常显示的问题,这通常是由于UI布局或样式设置不当导致的。以下是一些专业的排查和解决思路:

  1. 检查布局文件:确保tabs组件的布局设置正确,特别是背景颜色的设置。检查是否有其他布局或组件覆盖了tabs的背景,导致白色细线出现。
  2. 审查样式设置:仔细查看tabs组件及其子组件的样式设置,确保没有设置不当的边框、内边距或背景图片等属性,这些属性可能会影响背景颜色的正确显示。
  3. 测试不同设备:在不同版本和配置的HarmonyOS设备上测试应用,以排查是否由特定设备或系统版本导致的问题。
  4. 更新系统和工具:确保已安装最新版本的HarmonyOS和相关开发工具,因为新版本可能修复了已知的UI显示问题。

如果上述方法均未能解决问题,可能是由于更复杂的系统或代码问题导致的。此时,建议深入检查代码逻辑,或查阅最新的HarmonyOS开发文档以获取更具体的解决方案。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部