开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情
支付宝小程序导航栏
- my.setNavigationBar:my.setNavigationBar 是设置导航栏样式(包括:导航栏标题、导航栏背景色、导航栏底部边框颜色、导航栏左上角 LOGO 图片)的 API。
使用限制
- 导航栏左上角 LOGO 图片支持 GIF 格式,必须使用 HTTPS 图片链接。
- 若设置了导航栏背景色 backgroundColor,则导航栏底部边框颜色 borderBottomColor 不会生效,默认会和 backgroundColor 颜色一样。
- 导航栏背景色不支持渐变色。
- 此 API 支持个人支付宝小程序、企业支付宝小程序使用。
参数
2. my.hideBackHome:my.hideBackHome 是隐藏标题栏上的 返回首页 按钮的API。当用户打开的小程序最底层页面是非首页且非 tabbar 页面时,默认展示返回首页按钮,可在页面 onShow 中调用 hideHomeButton 进行隐藏
示例代码:
Q:导航栏左上角的 “返回首页” 按钮和 “返回上一页” 按钮何时会展示?
A:
- 当页面为最底层页面(页面栈深度为 1 ),且页面为非首页、非 tabbar 页面时,标题栏左上角默认展示 “返回首页” 按钮;
- 当页面栈深度大于 1 时,默认展示 “返回上一页” 按钮
- 页面栈 是小程序框架管理界面的方式,可以使用[my.getCurrentPages()].length 查看当前页面栈深度。
- my.getTitleColor:my.getTitleColor 是获取导航栏背景色的 API
参数:
示例代码:
4. my.showNavigationBarLoading:my.showNavigationBarLoading 是在当前页面显示导航条的加载动画的 API
示例代码:
效果:
5. my.hideNavigationBarLoading:my.hideNavigationBarLoading 是在当前页面隐藏导航条的加载动画的 API
示例代码:
Q:小程序右上角的 分享与收藏 可以设置颜色吗?
A:这是默认的,无法设置颜色。
Q:小程序胶囊按钮内的菜单页是否可以支持自定义修改?
A:目前小程序胶囊按钮内的菜单页暂不支持自定义修改。
Q:小程序胶囊按钮可以隐藏吗?可以去除吗?
A:不可以隐藏,不可以去除。
Q:导航栏的字体颜色可以自定义修改吗?
A:
可以通过 [my.setNavigationBar] 设置导航栏前景色 frontColor。
说明: frontColor 的颜色包括返回键、标题、收藏和右上角胶囊按钮,仅支持 #ffffff 和 #000000,从基础库 [2.7.24] 开始支持
Q:如何开通添加到首页的功能?
A:支付宝客户端 10.1.95 及以上版本中符合准入规则的小程序应用默认右上角菜单中显示 添加到首页 功能;如未显示证明不符合准入规则的要求,准入规则暂不对外。
Q:如何判断小程序是否收藏?
A:调用 my.getMenuButtonBoundingClientRect,通过 optionMenuStatus 字段判断。optionMenuStatus 为 Favorite 表示已收藏,UnFavorite 表示未收藏。
Q:是否有相关API监听添加到首页功能?
A:没有提供相关API
Q:是否有API监听收藏/取消收藏功能?
A:没有提供相关API。
Q:如何隐藏页面的回退按钮?
A:暂无 API 可以直接隐藏页面的回退按钮。可以先通过 my.reLaunch 进行页面跳转,在被跳转的页面里调用 my.hideBackHome 隐藏返回首页按钮。
tabbar
- my.showTabBar:my.showTabBar 是显示标签页(tabbar)的 API。
示例代码:
2. my.hideTabbar:my.hideTabBar 是隐藏 tabBar 的 API。
示例代码:
3. my.setTabBarItem:my.setTabBarItem 是动态设置 tabBar 某一项内容(文字、图标)的 API。
示例代码:
Bug & Tip
BugiOS 中,app.json 里已配置 tabBar 的情况下,在通过 my.nativeTo/my.redirectTo 到达的页面里,调用此 API 设置 tabBar 内容不会成功,回调不会触发。
Tipmy.setTabBarBadge() 和 my.setTabBarItem() 同时使用时,有概率会遇到 badge 被遮盖的情况。可通过改为在 setTabBarItem 的 success 回调里调用 setTabBarBadge 解决。
Tip可使用 [my.setTabBarStyle]修改 tabBar 样式。
4. my.setTabBarStyle:my.setTabBarStyle 是动态设置标签页(tabbar)的整体样式的 API,如文字颜色、标签背景色、标签边框颜色等。
5. my.setTabBarBadge:my.setTabBarBadge 是为标签页(tabbar)某一项的右上角添加文本的 API。可用于设置消息条数的红点提醒
Bug & Tip
Bugapp.json 里未对 tabItem 配置 icon 的情况下,调用此 API,iOS 系统不生效。
示例代码:
6. my.removeTabBarBadge:my.removeTabBarBadge 是移除标签页(tabbar)某一项右上角的文本的 API。
7. my.showTabBarRedDot:my.showTabBarRedDot 是显示标签页(tabbar)某一项右上角的红点的 API。
8. my.hideTabBarRedDot:my.hideTabBarRedDot 是隐藏标签页(tabbar)某一项右上角的红点的 API。
9. onTabItemTap:onTabItemTap 是切换标签(tab)时触发,可用于目标页面监听 tabBar 的点击事件。
Q:tabBar 的位置是否支持设置成顶部?
A:tabBar 的位置暂不支持自定义设置。
Q:如何监听 tabBar 点击事件?
A:在小程序页面中用 [onTabItemTap] 即可监听 tabBar 点击事件。
Q:tabBar 的 icon 图标是否支持 SVG 格式?
A:不支持 SVG 格式,只支持 PNG/JPEG/JPG 图片格式。
Q:如何设置 tab 的样式?
A:可以在 JSON 文件中直接设置样式(示例代码如下所示),或者调用 [my.setTabBarStyle]API 进行设置。
Q:是否能动态设置 tabBar 的项?
A:当前不支持动态增加或删除 tabBar 的项,只能通过 [my.setTabBarItem]动态设置已存在项内容,通过 [my.setTabBarStyle]动态设置对应项样式。
Q:切换 tabBar 时报错“Cannot read property 'XXX' of undefined”,如何处理?
A:切换 tabBar 时,tabBar 对应的页面中的 onLoad()、onReady()、onShow() 方法中存在某个对象访问了一个不存在的属性。
Q:跳转页面后,为何不显示 tabBar 呢?
A:使用 [my.switchtab()] 和 [my.reLaunch()] 两个方法转到 tabBar 页面才能显示 tabBar。使用 [my.navigateTo()] 或 [my.redirectTo()] ,可以跳转到 tabBar 页面,但是不会显示 tabBar。
Q:小程序进入 tabBar 页面,如何获取上一级页面路径呢?
A:在进入页面的时候将当前页面路径存入全局,在切换 tabBar 页面的时候拿全局的地址属性即可获取上一级页面路径。
路由
- my.switchTab:my.switchTab 跳转到指定标签页([tabBar])页面,并关闭其他所有非标签页页面。
2. my.navigateTo:my.navigateTo 保留当前页面,跳转到新页面。可以传值
传值(在navigateTo跳转里用events来接值,通过自定义函数拿到参数数据,参数数据即为传过来的数据。用success来进行传值,用参数的eventChannel.emit来监听自定义函数并传值。。。在跳转到的页面,通过getOpenerEventChannel建立页面的通信通道,通过emit来传值,通过on来接值):
参数:
3. my.navigateBack:my.navigateBack 是关闭当前页面,返回上一级或多级页面的 API。
可通过 [getCurrentPages()] 获取当前的页面栈信息,决定需要返回几层。
示例代码:
参数:
Q:使用 my.navigateBack 返回,如何通知所到达的页面刷新?是否可以通过监听返回按钮点击或页面返回事件达到这一目的?
A:使用 my.navigateBack 返回所到达的页面并不会自动刷新。当前页面可以通过 [onBack] 监听到导航栏上返回按钮(以及 Android 系统返回键)被点击,但不支持监听左滑手势、API 调用等其他方式导致的返回。但无论哪种返回方式,当前页面关闭前都会触发 [onUnload],返回到达的页面均会触发 [onShow] ,故可利用这个机制进行必要的处理。注意 onShow 事情并不一定是通过返回触发,需要自行判断。一种实现方式如下:
Q:my.navigateBack 是否支持跨页面传值?
A:可以通过 my.navigateTo 的 [events] 参数监听被打开页传来的消息,被打开页通过在 my.navigateBack 时使用 [getOpenerEventChannel] 进行页面间传值,具体实现如下:
Q:能否使用 my.navigateBack 退出小程序?
A:my.navigateBack 不能退出小程序,在最后一个页面调用会触发 fail 回调。退出小程序请使用 [my.exitMiniProgram](请注意该 API 的调用要由用户主动触发才能成功)。 4. my.redirectTo:my.redirectTo 关闭当前页面,打开指定页面。但不能跳转到tabbar页面
5. my.reLaunch:my.reLaunch 是关闭所有页面,跳转到应用内的某个页面。
Q:如何隐藏小程序中的导航栏的 返回首页 按钮?
A:[my.hideBackHome]接口可以隐藏导航栏 返回首页 按钮
eventChannel
- eventChannel.emit:在页面间通信中触发一个事件,触发自定义事件并传参
2. eventChannel.on:在页面间通信中持续监听一个事件。接值
3. eventChannel.off:在页面间通信中取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数。
4. EventChannel.once:在页面间通信中监听一个事件一次,触发后失效。