对于动作条菜单项动态绘制图标? (机器人,ActionBarSherlock)(dynamic

2019-08-01 20:48发布

如何动态更新图标的动作条菜单项显示一个“红色徽章”有多少? (概念上类似于“未读消息计数')

我用我的Android应用程序ActionBarSherlock,针对API等级10+。 我的应用程序是移动数据采集,有时,用户不能立即提交新的数据,但必须保存在本地手机上(例如,当连通性较差)。

每当有在手机上本地存储“未提交”项目,我想向用户显示一个菜单项(在操作栏),这样他们可以单击切换到UnsubmittedItems活动和手动触发上传。

理想情况下 ,该菜单项就会有未提交的项目数的一些图形表达(类似于电子邮件或SMS应用程序是如何显示未读邮件作为徽章的数量)。 目前,我只是做:

unsubmittedMenuItem.setTitle( Integer.toString(numUnsubmitted) );

而这个工作,但两个问题:我宁愿使用的图标,并保持标题的东西理解(“未提交”),并且还可以,我很想有一些自定义布局或设计在这里,如红圈后面的数字背景。

在思考如何做到这一点? 到目前为止,我的研究表明两种可能:

  1. 使用已预先创建了一些数字范围的水平列表绘制(如1,2,3 ... 10+),然后unsubmittedMenuItem.getIcon()。setLevel(numUnsubmitted)
  2. 建立整个位图完全动态的,使用位图和Canvas API的

这些都是在我呈现文本为位图(或者像离线#1或像#2飞),但将是巨大的杠杆的“天然”的文本渲染的动作条如果可能的话,简单的感觉相似插入它背后的红色圆圈像一个TextView。

是否有某种方式来设置自定义布局只是为了图标绘制? (不是全actionLayout,只是图标?)

Answer 1:

有很多方法可以做到这一点:

  1. 使用LayerDrawable和自己的图标,图像叠放徽章图像。
  2. 写这从扩展的自定义类Drawable和手工绘制的图标和徽章。
  3. 使用你的图标自定义操作项目视图中的ImageView一个TextView覆盖的徽章。


文章来源: dynamic drawable icon for ActionBar menu item? (Android, ActionBarSherlock)