我想添加一个不确定的进度条到蜂巢ActionBar,以便任何时候用户按下“刷新”,刷新图标暂时变成一个不确定的进度条,直到任务完成。电子邮件应用已经做到了这一点,但我想不出是怎么做到的。
有什么建议吗?
发布于 2011-08-22 11:45:19
很难说电子邮件应用程序是如何做到这一点的,但您可能希望保持简单,只使用StateDrawable
XML文件的id调用setIcon,然后使用计时器更改状态。
发布于 2012-11-11 16:07:44
要阐明Jon O的答案,关键是在刷新操作上设置和取消设置操作视图。这在ActionBarSherlock和本机4.x操作栏中都有效。下面的代码片段将把进度不确定视图放在刷新图标的顶部,假设刷新菜单项具有ID 'refresh_option‘,而替换布局(具有ProgressBar)位于布局’progress _ will‘中:
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上的a more detailed example。
发布于 2014-07-31 19:16:45
为了简化larham1's answer:你甚至不需要膨胀新的动作视图本身,因为MenuItem
有the method,它接受动作布局的id,所以你可以简单地写:
item.setActionView(R.layout.progress_bar);
https://stackoverflow.com/questions/7142722
复制相似问题