找回密码
 立即注册
首页 业界区 安全 Uniapp开发鸿蒙应用教程之自定义导航栏

Uniapp开发鸿蒙应用教程之自定义导航栏

郁兰娜 2025-5-31 23:30:15
连续分享了几天的Uniapp跨平台开发鸿蒙应用教程的文章,相信大家对跨平台开发已经有了初步的了解,今天分享一下跨平台开发中的自定义导航栏。
在Hbuilder的初始化项目中是自带了导航栏的,这是一个全局的导航栏,它的样式设置和修改是在全局的配置文件pages.json中进行。
1.png

现在打开pages.json文件,在globalStyle中有一些关于导航栏的属性,我们尝试修改一下:
 
  1. {
  2. "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
  3.                 {
  4. "path": "pages/index/index",
  5. "style": {
  6. "navigationBarTitleText": "uni-app"
  7.                         }
  8.                 }
  9.         ],
  10. "globalStyle": {
  11. "navigationBarTextStyle": "black",
  12. "navigationBarTitleText": "自定义导航栏",
  13. "navigationBarBackgroundColor": "#F8F800",
  14. "backgroundColor": "#F8F8F8"
  15.         },
  16. "uniIdRouter": {}
  17. }
复制代码
 
然后看到导航栏已经发生了改变:
 
2.png

 
这样的修改很方便很便捷,但是好像只有颜色和文字这些基础的属性可以修改,很多时候我们需要在导航栏上添加一些组件,比如按钮或者搜索框。
 
对于这种情况,uniapp也提供了相应的设置方案,还是在pages.json文件中,当我们需要为某一个页面的导航栏添加组件,就在对应的path路径下设置style,style中有个titleNView属性就是为导航栏添加自定义组件,像这样:
  1. "path": "pages/index/index",
  2. "style": {
  3. <view >
  4.   <input
  5. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  6. </view> "navigationBarBackgroundColor": "#00c170",
  7. <view >
  8.   <input
  9. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  10. </view> "app-harmony": {
  11. <view >
  12.   <input
  13. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  14. </view><view >
  15.   <input
  16. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  17. </view><view >
  18.   <input
  19. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  20. </view> "softinputMode": "adjustPan"
  21. <view >
  22.   <input
  23. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  24. </view> },
  25. <view >
  26.   <input
  27. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  28. </view> "app-plus": {
  29. "titleNView": {
  30.         <view >
  31.   <input
  32. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  33. </view> "buttons": [{
  34. "text": "搜索",
  35. "fontSize": "16",
  36.         <view >
  37.   <input
  38. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  39. </view><view >
  40.   <input
  41. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  42. </view><view >
  43.   <input
  44. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  45. </view><view >
  46.   <input
  47. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  48. </view>"float": "right",
  49.         <view >
  50.   <input
  51. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  52. </view><view >
  53.   <input
  54. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  55. </view><view >
  56.   <input
  57. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  58. </view><view >
  59.   <input
  60. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  61. </view>"color": "#fff"
  62.         <view >
  63.   <input
  64. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  65. </view><view >
  66.   <input
  67. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  68. </view>}],
  69. "searchInput": {
  70. "align": "center",
  71. "placeholder": "请输入信息",
  72. "backgroundColor": "#fff",
  73. "placeholderColor": "#000"
  74. }
  75. <view >
  76.   <input
  77. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  78. </view><view >
  79.   <input
  80. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  81. </view>}
  82. <view >
  83.   <input
  84. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  85. </view>}
  86. }
复制代码
 
但是幽蓝君亲测这种设置方式在浏览器运行时可以正常显示,在鸿蒙中是无效的:
 
3.png

 
所以在鸿蒙开发中我们需要自己定义导航栏。
 
再次回到pages.json文件,这次将navigationStyle设置成custom,作用是取消原生的导航栏:
  1. "path": "pages/index/index",
  2. "style": {
  3. <view >
  4.   <input
  5. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  6. </view>"navigationStyle": "custom"
  7. }
复制代码
 
然后打开需要自定义导航栏的页面,我这里就直接在首页index.vue中操作,实现逻辑比较简单,就是在页面顶部添加一个导航栏大小的组件,然后在其中添加搜索框,相关代码如下:
  1. <view >
  2.   <input
  3. placeholder="请输入搜索内容" placeholder- confirm-type="search" @input="navSearchAction" />
  4. </view>
复制代码
  1. .custom-nav-bar {
  2. display: flex;
  3. justify-content: space-between;
  4. align-items: center;
  5. height: 54px;
  6. /* 根据需要调整高度 */
  7. background-color: #f8f8f8;
  8. /* 导航栏背景色 */
  9. /* 其他样式属性 */
  10. padding: 30px 12px 0px 12px;
  11. align-items: center;
  12. justify-content: center;
  13. }
复制代码
 
看一下运行效果:
 
4.png

今天就以添加一个搜索框为例,大家如果需要自定义其他的样式也是类似的实现方式。
以上就是uniapp跨平台开发鸿蒙应用中的自定义导航栏,感谢大家的阅读。
 #鸿蒙三方框架##Uniapp##购物#

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册