将操作栏菜单项图标替换为不确定进度条

我想在蜂窝动作栏中添加一个不确定的进度条,以便每当用户按“刷新”时,刷新图标都会暂时变成不确定的进度条,直到任务完成。电子邮件应用程序已经这样做了,但我不知道该怎么做。

有什么建议吗?


答案 1

为了澄清 Jon O 的答案,关键是在刷新操作上设置和取消设置操作视图。这适用于 ActionBarSherlock 和本机 4.x 操作栏。以下代码段将把进度不确定视图放在刷新图标的顶部,假设刷新菜单项的 ID 为“refresh_option”,并且替换布局(具有进度条)位于布局“progress_wheel”中:

 MenuItem item = abmenu.findItem(R.id.refresh_option);
 LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 View abprogress = inflater.inflate(R.layout.progress_wheel, null);
 item.setActionView(abprogress);

取消设置进度视图,刷新图标将返回到可见性:

 item.setActionView(null);

在 github 上查看更详细的示例


答案 2

很难确切地说出电子邮件应用程序是如何做到这一点的,但您可能希望保持简单,只需使用XML文件的ID调用setIcon,然后使用计时器更改状态即可。StateDrawable


推荐