HarmonyOS 鸿蒙Next 自定义tabs设置背景颜色,有白色细线异常显示
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布局或样式设置不当导致的。以下是一些专业的排查和解决思路:
- 检查布局文件:确保tabs组件的布局设置正确,特别是背景颜色的设置。检查是否有其他布局或组件覆盖了tabs的背景,导致白色细线出现。
- 审查样式设置:仔细查看tabs组件及其子组件的样式设置,确保没有设置不当的边框、内边距或背景图片等属性,这些属性可能会影响背景颜色的正确显示。
- 测试不同设备:在不同版本和配置的HarmonyOS设备上测试应用,以排查是否由特定设备或系统版本导致的问题。
- 更新系统和工具:确保已安装最新版本的HarmonyOS和相关开发工具,因为新版本可能修复了已知的UI显示问题。
如果上述方法均未能解决问题,可能是由于更复杂的系统或代码问题导致的。此时,建议深入检查代码逻辑,或查阅最新的HarmonyOS开发文档以获取更具体的解决方案。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。