HarmonyOS 自定义tabs点击非文字和图片区域,页面切换,文字图片未高亮
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(storage)
@Component
struct Index {
// bottomRectHeight: string = AppStorage.get<number>('bottomRectHeight') + 'px';
@LocalStorageLink('phoneticName') phoneticName: string = 'D';
@State currentIndex: number = 0; // 当前tab值
private tabsController: TabsController = new TabsController();
// 自定义tabs
@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('101%')
// .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具体数值在实际中应与导航条区域高度保持一致
}
aboutToAppear(): void {
console.log(this.phoneticName, 'hahaha')
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS Slider组件能不能支持左右自定义图片或者文字
1004浏览 • 1回复 待解决
HarmonyOS 文字和图片相对布局问题
601浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何自定义Tabs中的导航栏以包含文字和图标?
717浏览 • 1回复 待解决
HarmonyOS 文本怎么自定义识别高亮显示和自定义点击事件显示菜单/气泡?
1196浏览 • 1回复 待解决
HarmonyOS 图片+文字排列问题
658浏览 • 1回复 待解决
HarmonyOS button文字怎么自定义设置位置
736浏览 • 1回复 待解决
HarmonyOS 文字fontFamily未生效
726浏览 • 1回复 待解决
Text匹配文字高亮显示
1417浏览 • 1回复 待解决
是否可以自定义权限弹框文字
2527浏览 • 1回复 待解决
使用overlay实现在图片正中间显示一段自定义样式的文字。
1061浏览 • 1回复 待解决
HarmonyOS 长按文字自定义交互和选中样式,推荐使用什么组件?
631浏览 • 1回复 待解决
HarmonyOS 如何给图片增加文字水印
695浏览 • 1回复 待解决
HarmonyOS 如何在地图上添加自定义(包含自定义文字)的标记?
784浏览 • 1回复 待解决
HarmonyOS 弹窗文字未居中
417浏览 • 1回复 待解决
HarmonyOS 怎么高亮显示搜索的文字
924浏览 • 1回复 待解决
HarmonyOS Text部分文字高亮设置
902浏览 • 1回复 待解决
HarmonyOS webview 自定义菜单如何拿到选中的文字
551浏览 • 1回复 待解决
HarmonyOS 是否支持图片读取文字能力
757浏览 • 1回复 待解决
#鸿蒙通关秘籍#Tabs组件中如何实现自定义页面切换动画?
1486浏览 • 1回复 待解决
Swiper指示器选中和未选中可以设置自定义图片?
847浏览 • 1回复 待解决
HarmonyOS swiper 指示器 选中和未选中 如何设置自定义图片。
641浏览 • 1回复 待解决
HarmonyOS 图片增加自定义水印
561浏览 • 1回复 待解决
HarmonyOS 自定义图片选择界面
922浏览 • 1回复 待解决
HarmonyOS 图片和文字如何适配暗色模式?
585浏览 • 1回复 待解决
HarmonyOS 自定义tabs组件可以导入页面吗
748浏览 • 1回复 待解决
可以试下将TabBuilder中onClick点击事件注释掉,使用Tabs组件的onChange事件,如: