当前位置:   article > 正文

HarmonyOS应用开发Tabs组件的使用

HarmonyOS应用开发Tabs组件的使用

 

  1. @Entry
  2. @Component
  3. struct TabsPage {
  4. @State currentIndex: number = 0;
  5. private tabsController: TabsController = new TabsController();
  6. private controller: TabsController = new TabsController()
  7. /**
  8. * 自定义TabBar
  9. * @param title
  10. * @param targetIndex
  11. * @param selectedImg
  12. * @param normalImg
  13. */
  14. @Builder TabBuilder(
  15. title: string,
  16. targetIndex: number,
  17. selectedImg: Resource,
  18. normalImg: Resource
  19. ) {
  20. Column() {
  21. Image(this.currentIndex === targetIndex ? selectedImg : normalImg)
  22. //图片大小设置
  23. .size({ width: 30, height: 30 })
  24. Text(title)
  25. //字体颜色设置
  26. .fontColor(this.currentIndex === targetIndex ? '#007DFE' : '#000000')
  27. //字体大小设置
  28. .fontSize(16)
  29. }
  30. .width('100%')
  31. //自定义底部导航栏点击事件
  32. .onClick(() => {
  33. this.currentIndex = targetIndex;
  34. this.tabsController.changeIndex(this.currentIndex);
  35. })
  36. }
  37. build() {
  38. //底部导航栏
  39. //BarPosition.Start:位于容器顶部
  40. //BarPosition.End:位于容器底部
  41. Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
  42. //底部子项一
  43. TabContent() {
  44. //子项一内容
  45. Column() {
  46. //顶部导航菜单
  47. Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
  48. TabContent() {
  49. Column() {
  50. Text('页签一')
  51. .width('100%')
  52. .height('100%')
  53. .textAlign(TextAlign.Center)
  54. .fontSize(15)
  55. }
  56. .width('100%')
  57. .height('100%')
  58. .backgroundColor(0xF2F3F5)
  59. }
  60. .tabBar('页签一')
  61. TabContent() {
  62. Column() {
  63. Text('页签二')
  64. .width('100%')
  65. .height('100%')
  66. .textAlign(TextAlign.Center)
  67. .fontSize(15)
  68. }
  69. .width('100%')
  70. .height('100%')
  71. .backgroundColor(0xF2F3F5)
  72. }
  73. .tabBar('页签二')
  74. TabContent() {
  75. Column() {
  76. Text('页签三')
  77. .width('100%')
  78. .height('100%')
  79. .textAlign(TextAlign.Center)
  80. .fontSize(15)
  81. }
  82. .width('100%')
  83. .height('100%')
  84. .backgroundColor(0xF2F3F5)
  85. }
  86. .tabBar('页签三')
  87. TabContent() {
  88. Column() {
  89. Text('页签四')
  90. .width('100%')
  91. .height('100%')
  92. .textAlign(TextAlign.Center)
  93. .fontSize(15)
  94. }
  95. .width('100%')
  96. .height('100%')
  97. .backgroundColor(0xF2F3F5)
  98. }
  99. .tabBar('页签四')
  100. TabContent() {
  101. Column() {
  102. Text('页签五')
  103. .width('100%')
  104. .height('100%')
  105. .textAlign(TextAlign.Center)
  106. .fontSize(15)
  107. }
  108. .width('100%')
  109. .height('100%')
  110. .backgroundColor(0xF2F3F5)
  111. }
  112. .tabBar('页签五')
  113. TabContent() {
  114. Column() {
  115. Text('页签六')
  116. .width('100%')
  117. .height('100%')
  118. .textAlign(TextAlign.Center)
  119. .fontSize(15)
  120. }
  121. .width('100%')
  122. .height('100%')
  123. .backgroundColor(0xF2F3F5)
  124. }
  125. .tabBar('页签六')
  126. }
  127. //设置TabBar宽度
  128. .barWidth('100%')
  129. //设置Tabs组件宽度
  130. .width('100%')
  131. //设置Tabs组件背景颜色
  132. .backgroundColor(0xFFFFFF)
  133. //设置TabBar可滚动
  134. .barMode(BarMode.Scrollable)
  135. // .vertical(true) //设置页签位于容器左侧,barPosition属性为BarPosition.End时页签位于容器右侧
  136. }
  137. .width('100%')
  138. .height('100%')
  139. }
  140. .tabBar(
  141. this.TabBuilder(
  142. '首页',
  143. 0,
  144. $r('app.media.home_selected'),
  145. $r('app.media.home_normal')
  146. )
  147. )
  148. //底部子项二
  149. TabContent() {
  150. Column() {
  151. Text('我的')
  152. .textAlign(TextAlign.Center)
  153. .width('100%')
  154. .height('100%')
  155. .fontSize(15)
  156. }
  157. .width('100%')
  158. .height('100%')
  159. .backgroundColor('#F2F3F5')
  160. }
  161. .tabBar(
  162. this.TabBuilder(
  163. '我的',
  164. 1,
  165. $r('app.media.mine_selected'),
  166. $r('app.media.mine_normal')
  167. )
  168. )
  169. }
  170. //底部导航宽度
  171. .barWidth('100%')
  172. //底部导航背景色
  173. .backgroundColor(Color.White)
  174. }
  175. }

顶部页签不需要自定义TabBar,直接使用Tabs组件就可以实现顶部导航菜单,barWidth属性设置TabBar宽度,width设置Tabs组件宽度,barMode设置TabBar可滚动,vertical属性设置页签位置。

TabContent组件设置页签项内容,tabBar属性设置页签名称。

自定义TabBar用@Builder开头,底部切换导航用自定义TabBar,有四个参数,分别为:页签名称、页签下标、选中图标、未选中图标。

在tabBar属性中引用自定义的TabBar用this.TabBuilder并设置相关参数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/288970?site
推荐阅读
相关标签
  

闽ICP备14008679号