首页 > 其他分享 >自定义 tabBar

自定义 tabBar

时间:2024-12-24 10:11:59浏览次数:3  
标签:index tabBar 自定义 getTabBar tab 组件

自定义 tabBar

基础库 2.5.0 开始支持,低版本需做兼容处理

自定义 tabBar 可以让开发者更加灵活地设置 tabBar 样式,以满足更多个性化的场景。

在自定义 tabBar 模式下

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

注意:如需实现 tab 选中态,要在当前页面下,通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态。可参考底部的代码示例。

使用流程

1. 配置信息

  • app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。
  • 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。

示例:

{
  "tabBar": {
    "custom": true,
    "color": "#000000",
    "selectedColor": "#000000",
    "backgroundColor": "#000000",
    "list": [{
      "pagePath": "page/component/index",
      "text": "组件"
    }, {
      "pagePath": "page/API/index",
      "text": "接口"
    }]
  },
  "usingComponents": {}
}

2. 添加 tabBar 代码文件

在代码根目录下添加入口文件:

custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

3. 编写 tabBar 代码

用自定义组件的方式编写即可,该自定义组件完全接管 tabBar 的渲染。另外,自定义组件新增 getTabBar 接口,可获取当前页面下的自定义 tabBar 组件实例。

示例代码

在开发者工具中预览效果

skyline 模式

使用 skyline 渲染模式的时候,需要进行如下适配:

1. tabBar 组件样式兼容

  • tabBar 根组件需要添加 pointer-events: auto
  • tabBar 根组件定位需为 position: absolute
<view class="tab-bar">
  <!-- tabbar item-->
</view>
.tab-bar {
  pointer-events: auto;
  position: absolute;
}

2. getTabBar 回调函数

skyline 模式下,页面/组件上的 getTabBar 接口为异步回调的方式获取 tabBar 实例

Page({
  getInstance() {
    if (typeof this.getTabBar === 'function' ) {
      this.getTabBar((tabBar) => {
        tabBar.setData({
          selected: 0
        })
      })
    }
  }
})

skyline 示例代码

在开发者工具中预览效果

标签:index,tabBar,自定义,getTabBar,tab,组件
From: https://www.cnblogs.com/AtlasLapetos/p/18623971

相关文章

  • 【CSS in Depth 2 精译_091】15.4:让 CSS 高度值过渡到自动高度 + 15.5:自定义属性的过
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第五部分添加动效✔️【第15章过渡】✔️15.1状态间的由此及彼15.2定时函数15.2.1定制贝塞尔曲线15.2.2阶跃15.3非动画属性15.3.1不可添加动画效果的属性15.3.2淡入与淡出15.4过渡到自然......
  • 禅道bug增加自定义字段
    禅道版本18.9需求给禅道的bug模块,增加自定义字段。目前主要增加“发现阶段”、“所属环境”、“出现频率”增加bug的类型在bug列表增加搜索:“发现阶段”、“所属环境”、“出现频率”在测试报告增加模块:“发现阶段”、“所属环境”、“出现频率”禅道开发手册https://w......
  • 教你学会自定义鼠标指针
    我现在用的一款很好看的指针如下图所示:是不是真的还挺不错的,还有更多可好玩的样式:只要先下载了这个软件,这些都是可以免费使用的,看腻了就换一个!下载过后操作这个就可以直接生效了,都不用重新启动的......
  • QTreeView + 自定义json模型
    QTreeView使用自定义json模型前言QTreeView+自定义json模型QTreeView使用自定义json模型支持节点插入删除二、代码//QJsonModel.h#ifndefQJSONMODEL_H#defineQJSONMODEL_H#include<QAbstractItemModel>#include<QJsonDocument>#include<QJsonObject>#i......
  • Vue 3 指令开发:自定义输入处理指令 v-input
    Vue3指令开发:自定义输入处理指令v-input在现代前端开发中,用户输入的格式化与验证是一个重要的任务。为了提升用户体验,我们可以通过自定义指令来限制用户在输入框内的输入。本文将介绍如何在Vue3中实现一个名为v-input的自定义指令,用于处理不同类型的输入值,包括数字......
  • Vue3封装一个Element的自定义上传组件
    封装一个ElementPlus的自定义上传组件写在前面,工作中要封装一个文件上传组件,想着以后肯定也能用得到,就给记录了下来文章通篇借鉴的是这位大佬的,有需要的可以去看看https://blog.51cto.com/u_15295608/3527047直接上代码:先看样式:就是这样子了!!!,这是个弹窗的形式,有空我再整......
  • zabbix自定义监控项
    只要zabbix-get能得到的数据zabbix-server就能得到执行脚本之一#cat /etc/zabbix/zabbix_agentd.d/tcp_conn_plugin.sh#!/bin/bash#author:songxiaomintcp_conn_status(){  TCP_STAT=$1  ss-ant|awk'NR>1{++s[$1]}END{for(kins)printk,s[k]}'......
  • 【阿尼亚探索大模型】书生大模型实战营-进阶岛第2关(L2G2000)Lagent 自定义你的 Agent
    任务类型任务内容任务一使用Lagent复现“制作一个属于自己的Agent”任务二使用Lagent复现 “Multi-Agents博客写作系统的搭建”任务三将你的Agent部署到HuggingFace或ModelScope平台基础环境配置依然选择30%A100开发机进行实验。使用conda创建虚拟环境。启动......
  • Django 模型管理器中自定义方法和添加导出功能
    在Django中,模型管理器提供了一种扩展模型行为的方式。您可以重写或添加自定义方法,以满足特定的业务需求。在本文中,我们将探讨如何在模型管理器中自定义方法,并提供一些常见的用例。此外,我们还将介绍如何在管理员界面中添加导出数据为CSV文件的功能。什么是模型管理......
  • 自定义多层级zip解压工具
    自定义多层级zip解压工具前言项目中偶然需要,希望能处理嵌套的压缩包,但是又不希望把文件解压处理。原本不希望重复造轮子,但没有发现很好用的现成案例,就简单处理了一下。正文java做zip解压一般使用ZipFile​或者ZipInputStream​。在实际使用中,遇到了zip清单属......