如何动态更新 ActionBar MenuItem 的图标以显示带有数字的“红色徽章”? (概念上类似于“未读消息计数”)
我在 Android 应用程序中使用 ActionBarSherlock,目标 API 级别为 10+。我的应用程序用于移动数据捕获,有时,用户无法立即提交新数据,而必须将其保存在手机本地(例如,当连接较差时)。
每当手机上本地存储有“未提交”的项目时,我想向用户显示一个菜单项(在操作栏中),以便他们可以单击到“未提交的项目”活动并手动触发上传。
Ideally,此菜单项将有一些未提交项目数量的图形表示(类似于电子邮件或短信应用程序将未读消息数量显示为徽章的方式)。目前,我只是在做:
unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );
这可行,但有两个问题:我更喜欢使用图标并将标题保留为易于理解的内容(“未提交”),而且我也希望在这里有一些自定义布局或设计,例如红色圆圈数字背后的背景。
关于如何实现这一目标的想法?到目前为止,我的研究提出了两种可能性:
- 使用为某些数字范围(例如 1、2、3...10+)预先创建的级别列表可绘制对象,然后使用 unsubscribedMenuItem.getIcon().setLevel( numUnsubscribed )
- 使用 Bitmap 和 Canvas API 完全动态地构建整个位图
从某种意义上说,它们是相似的,我将文本渲染成位图(像 #1 一样离线,像 #2 一样动态),但如果可能的话,利用 ActionBar 的“本机”文本渲染会很棒。像在 TextView 中一样在其后面插入一个红色圆圈。
有没有办法为可绘制图标设置自定义布局? (不是完整的actionLayout,只是为了图标?)
有很多方法可以做到这一点:
- Use LayerDrawable https://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html并将徽章图像堆叠在图标图像之上。
- 编写一个自定义类,该类扩展自
Drawable
并手动绘制图标和徽章。
- 使用带有图标的自定义操作项视图
ImageView
with a TextView
徽章的叠加层。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)