App Inventor 2 悬浮通知与导航栏教程 - NotificationStyle与Navbar扩展

« 返回首页

概述

已有文档:extensions/NotificationStyle.md 和 extensions/navbar.md 分别介绍了通知样式扩展和导航栏扩展。本文整合两者,补充实战指导。

通知系统

通知渠道(Android 8+必需)

when Screen1.Initialize() {
  // 创建通知渠道
  NotificationStyle1.CreateChannel("messages", "消息通知", "接收新消息通知", 3)
}

基本通知

when Button1.Click() {
  NotificationStyle1.SimpleNotification("messages", 1001, "新消息", "你收到了一条新消息", "app_icon")
}

大文本通知

NotificationStyle1.Text("messages", 1001, "长文章标题", "这是一篇很长的文章内容...", "摘要信息")

带操作按钮的通知

NotificationStyle1.ActionNotification("messages", 1001, "提醒", "别忘了吃药!", "app_icon", createList("稍后提醒", "已完成"))

when NotificationStyle1.ActionClicked(id, index) {
  if index == 1 {
    // 稍后提醒 → 5分钟后再通知
    Clock1.TimerInterval = 300000
    Clock1.TimerEnabled = True
  } else if index == 2 {
    // 已完成 → 取消通知
    NotificationStyle1.CancelNotification(1001)
  }
}

进度条通知

global progress = 0

when Clock2.Timer() {
  global_progress = global_progress + 5
  NotificationStyle1.ProgressNotification("download", 2001, "下载中...", "正在下载文件", global_progress, 100)
  if global_progress >= 100 {
    Clock2.TimerEnabled = False
    NotificationStyle1.SimpleNotification("download", 2001, "下载完成", "文件已保存", "app_icon")
  }
}

底部导航栏

已有文档

extensions/navbar.md 已介绍基本用法。此处补充实战。

配置导航栏

when Screen1.Initialize() {
  // 添加导航项
  Navbar1.AddItem("首页", "home_icon.png", True)
  Navbar1.AddItem("消息", "message_icon.png", True)
  Navbar1.AddItem("我的", "profile_icon.png", True)
  Navbar1.SetSelection(1) // 默认选中首页
}

when Navbar1.ItemSelected(position) {
  if position == 1 {
    VerticalArrangement1.Visible = True
    VerticalArrangement2.Visible = False
    VerticalArrangement3.Visible = False
  } else if position == 2 {
    VerticalArrangement1.Visible = False
    VerticalArrangement2.Visible = True
    VerticalArrangement3.Visible = False
  } else if position == 3 {
    VerticalArrangement1.Visible = False
    VerticalArrangement2.Visible = False
    VerticalArrangement3.Visible = True
  }
}

常见问题

Q1: Android 13+通知不显示?

Android 13需要运行时通知权限。在Screen1初始化时请求:

when Screen1.Initialize() {
  Screen1.AskForPermission("android.permission.POST_NOTIFICATIONS")
}

Q2: 通知点击无法打开App?

需要设置通知的PendingIntent。部分扩展支持设置点击后的动作。

Q3: 导航栏遮挡底部内容?

在布局底部留出导航栏高度的空间(通常56dp)。

总结

功能 扩展 说明
基本通知 NotificationStyle Android 8+需要渠道
大文本通知 NotificationStyle 展开显示长文本
进度通知 NotificationStyle 下载/上传进度
按钮通知 NotificationStyle 可操作通知
底部导航 Navbar 底部Tab切换
文档反馈