codecamp

导航组件

导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。

说明

该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

必须包含两个子组件,其中第二个子组件必须为NavDestination

说明

子组件个数异常时:

  1. 有且仅有1个时,触发路由到NavDestination的能力失效。
  2. 有且仅有1个时,且使用NavDestination场景下,不进行路由。
  3. 大于2个时,后续的子组件不显示。
  4. 第二个子组件不为NavDestination时,触发路由功能失效。

接口

NavRouter()

事件

名称

功能描述

onStateChange(callback: (isActivated: boolean) => void)

组件激活状态切换时触发该回调。返回值isActivated为true时表示激活,为false时表示未激活。

说明:

开发者点击激活NavRouter,加载对应的NavDestination子组件时,回调onStateChange(true)。NavRouter对应的NavDestination子组件不再显示时,回调onStateChange(false)。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct NavRouterExample {
  5. @State isActiveWLAN: boolean = false
  6. @State isActiveBluetooth: boolean = false
  7. build() {
  8. Column() {
  9. Navigation() {
  10. NavRouter() {
  11. Row() {
  12. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  13. Text(`WLAN`)
  14. .fontSize(22)
  15. .fontWeight(500)
  16. .textAlign(TextAlign.Center)
  17. }
  18. .width('90%')
  19. .height(72)
  20. NavDestination() {
  21. Flex({ direction: FlexDirection.Row }) {
  22. Text('未找到可用WLAN').fontSize(30).padding({ left: 15 })
  23. }
  24. }.hideTitleBar(false).backgroundColor('#0c182431')
  25. }.backgroundColor(this.isActiveWLAN ? '#ccc' : '#fff')
  26. .borderRadius(24)
  27. .onStateChange((isActivated: boolean) => {
  28. this.isActiveWLAN = isActivated
  29. })
  30. NavRouter() {
  31. Row() {
  32. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  33. Text(`蓝牙`)
  34. .fontSize(22)
  35. .fontWeight(500)
  36. .textAlign(TextAlign.Center)
  37. }
  38. .width('90%')
  39. .height(72)
  40. NavDestination() {
  41. Flex({ direction: FlexDirection.Row }) {
  42. Text('未找到可用蓝牙').fontSize(30).padding({ left: 15 })
  43. }
  44. }.hideTitleBar(false).backgroundColor('#0c182431')
  45. }.backgroundColor(this.isActiveBluetooth ? '#ccc' : '#fff')
  46. .borderRadius(24)
  47. .onStateChange((isActivated: boolean) => {
  48. this.isActiveBluetooth = isActivated
  49. })
  50. }
  51. .title('设置')
  52. .titleMode(NavigationTitleMode.Free)
  53. .mode(NavigationMode.Auto)
  54. .hideTitleBar(false)
  55. .hideToolBar(true)
  56. }.height('100%')
  57. }
  58. }

展示菜单MenuItem的分组
用于显示导航内容区
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

媒体组件

像素

枚举

类型

接口

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }