【发布时间】:2012-10-24 21:09:18
【问题描述】:
如何动态更新 ActionBar MenuItem 的图标以显示带有数字的“红色徽章”? (概念上类似于“未读消息计数”)
我在我的 Android 应用程序中使用 ActionBarSherlock,目标 API 级别为 10+。我的应用程序用于移动数据捕获,有时用户无法立即提交新数据,但必须将其保存在手机本地(例如,当网络连接不佳时)。
每当手机本地存储“未提交”项目时,我想向用户显示一个菜单项(在操作栏中),以便他们可以单击“未提交项目”活动并手动触发上传。
理想情况下,此菜单项将有一些未提交项目数量的图形表示(类似于电子邮件或短信应用程序如何将未读消息的数量显示为徽章)。目前,我只是在做:
unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );
这可行,但有两个问题:我更喜欢使用图标并将标题保持为可理解的内容(“未提交”),此外,我希望在这里有一些自定义布局或设计,例如数字后面的红色圆圈背景。
关于如何实现这一点的想法?到目前为止,我的研究提出了两种可能性:
- 使用为某些数字范围(例如 1、2、3...10+)预先创建的可绘制级别列表,然后 unsubmittedMenuItem.getIcon().setLevel( numUnsubmitted )
- 使用 Bitmap 和 Canvas API 完全动态构建整个位图
这些在我将文本渲染为位图的意义上是相似的(像 #1 那样离线或像 #2 那样在运行中)但是如果利用 ActionBar 的“本机”文本渲染会很棒可能,只需在其后面插入一个红色圆圈,就像在 TextView 中一样。
有没有办法为可绘制的图标设置自定义布局? (不是完整的 actionLayout,只是为了图标?)
【问题讨论】:
标签: android android-actionbar actionbarsherlock