小部件中的进度条

7
我在使用App Widget中的ProgressBar时遇到了一个有趣的情况...文档(http://developer.android.com/guide/topics/appwidgets/index.html)表示,ProgressBar是一种支持的小部件类...
我没有问题让ProgressBar在我的App Widget中显示,但问题在于,我希望它只在后台处理时作为对用户的视觉反馈而显示。
在ImageViews上,我通过RemoteViews.setViewVisibility()来实现这一点,一切都很顺利。然而,对于ProgressBar,我得到了一个异常,说ProgressBar不能使用这个方法。
这是故意的还是一个错误?有没有办法解决这个问题?
2个回答

17

一个更简单的想法是,将进度条放在某个容器内(比如线性布局),并显示/隐藏该容器。


12

可能是一个bug。在Android源代码的Java中,有一个特定的注释(@RemotableViewMethod),你需要用它来标记某个方法可以通过RemoteViews使用。对于setVisibility()View有这个注释,但是ProgressBar覆盖了该方法并且没有自己版的注释。如果@RemotableViewMethod没有被继承,并且覆盖“撤销”该注释,那么这就解释了你看到的症状。

一个解决方法是使用两个应用小部件布局,并在更新应用小部件时创建RemoteViews对象并选择所需的布局(带或不带ProgressBar)。

我会注意尝试复制这个问题,如果我看到相同的问题,我会在Android问题跟踪器上发布一个问题。


感谢提供信息和解决方法!顺便说一下,我目前正在使用1.5 SDK进行编译,所以可能已经在后续版本中修复了。 - Justin
可能不是,因为我在回答时查看的是更当前的代码(通过Google代码搜索)。 - CommonsWare
从API Level 8开始仍然无法正常工作。但是使用额外的布局提示是有效的 :) - Markus Rudel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接