微信小程序自定义底部 tabbar的两个方法

本文介绍了两种微信小程序自定义tabbar的方法:官方推荐的自定义组件方式和传统自定义组件方法。官方方法涉及配置、添加组件文件、编写组件代码及getTabBar接口的使用,每个页面需独立管理选中态。传统方法则需要隐藏原生tabbar,编写自定义组件并绑定路由进行跳转。
摘要由CSDN通过智能技术生成

这里记一下微信小程序自定义 tabbar 的方法 ,一个是官方给出的 。 一个是我在尝试的过程中想到的。

官方文档给了一个自定义tabbar 的方法 。

这个方法需要注意一下几点 :

  • 为了保证低版本兼容以及区分哪些页面是 tab 页,tabBar 的相关配置项需完整声明,但这些字段不会作用于自定义 tabBar 的渲染。
  • 此时需要开发者提供一个自定义组件来渲染 tabBar,所有 tabBar 的样式都由该自定义组件渲染。推荐用 fixed 在底部的 cover-view + cover-image 组件渲染样式,以保证 tabBar 层级相对较高。
  • 与 tabBar 样式相关的接口,如 wx.setTabBarItem 等将失效。
  • 每个 tab 页下的自定义 tabBar 组件实例是不同的,可通过自定义组件下的 getTabBar 接口,获取当前页面的自定义 tabBar 组件实例。
  • 注意:如需实现 tab 选中态,要在当前页面下,通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态。可参考底部的代码示例。

官方自定义 tabbar 过程 :

1. 配置信息

在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整(兼容低版本)。
所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。
示例:


{
   
  "tabBar": {
   
    "custom": true,   // 表示使用自定义 tabbar 
    "color": "#000000",  // 可以不填 , 兼容低版本
    "selectedColor": "#000000",  // 可以不填 , 兼容低版本
    "backgroundColor": <
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序自定义TabBar可以通过在app.json中配置tabBar选项来实现。具体做法是: 1. 在app.json中配置tabBar选项,包括tabBar的颜色、背景色、选中项索引等信息。例如: ``` { "tabBar": { "color": "#999999", "selectedColor": "#FF0000", "backgroundColor": "#FFFFFF", "list": [ { "pagePath": "pages/index/index", "text": "首页", "iconPath": "images/tabbar/home.png", "selectedIconPath": "images/tabbar/home-active.png" }, { "pagePath": "pages/list/list", "text": "列表", "iconPath": "images/tabbar/list.png", "selectedIconPath": "images/tabbar/list-active.png" }, { "pagePath": "pages/profile/profile", "text": "个人", "iconPath": "images/tabbar/profile.png", "selectedIconPath": "images/tabbar/profile-active.png" } ], "borderStyle": "white" } } ``` 2. 在每个页面的json文件中设置navigationBarTitleText,用于显示每个页面的标题。例如: ``` { "navigationBarTitleText": "首页" } ``` 3. 在每个页面的wxml文件中,使用自定义TabBar组件来显示底部导航栏。例如: ``` <custom-tab-bar selected="{{selected}}" list="{{list}}" bind:change="tabBarChange"></custom-tab-bar> ``` 其中,selected是当前选中的TabBar项的索引,list是TabBar的配置信息,bind:change是TabBar项切换时的回调函数。 4. 在自定义TabBar组件中,使用wx.switchTab函数来切换页面。例如: ``` Page({ data: { selected: 0, list: [ { "pagePath": "/pages/index/index", "text": "首页", "iconPath": "/images/tabbar/home.png", "selectedIconPath": "/images/tabbar/home-active.png" }, { "pagePath": "/pages/list/list", "text": "列表", "iconPath": "/images/tabbar/list.png", "selectedIconPath": "/images/tabbar/list-active.png" }, { "pagePath": "/pages/profile/profile", "text": "个人", "iconPath": "/images/tabbar/profile.png", "selectedIconPath": "/images/tabbar/profile-active.png" } ] }, methods: { tabBarChange: function(e) { var index = e.detail.index; var pagePath = this.data.list[index].pagePath; wx.switchTab({ url: pagePath, }) } } }) ``` 在这个示例中,我们在Page中定义了selected和list两个变量,分别用于存储当前选中的TabBar项的索引和TabBar的配置信息。在tabBarChange回调函数中,我们通过e.detail.index获取用户选中的TabBar项的索引,然后根据索引获取对应的页面路径,并通过wx.switchTab函数来切换页面。 需要注意的是,wx.switchTab函数只能用于切换TabBar页面,不能用于切换非TabBar页面。如果需要在非TabBar页面中跳转到其他页面,可以使用wx.navigateTo或wx.redirectTo函数来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无糖的酸奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值