【问题标题】:ProgressBar in an AppWidgetAppWidget 中的进度条
【发布时间】:2010-03-10 09:35:15
【问题描述】:

我在应用小部件中使用 ProgressBar 时遇到了一个有趣的情况...文档 (http://developer.android.com/guide/topics/appwidgets/index.html) 说 ProgressBar 是受支持的小部件类...

让 ProgressBar 在我的 App Widget 中显示没有问题,但问题是我希望它仅在后台处理发生时作为视觉反馈显示给用户。

在 ImageViews 上,我通过 RemoteViews.setViewVisibility() 执行此操作,一切正常。但是,对于 ProgressBar,我收到一个异常,说 ProgressBar 无法使用此方法。

这是故意的还是一个错误?有没有办法解决这个问题?

【问题讨论】:

    标签: android progress-bar android-appwidget


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这可能是一个错误。您需要在 Android 本身的 Java 源代码中使用特定的注释 (@RemotableViewMethod) 来将方法标记为可通过RemoteViews 使用。 ViewsetVisibility() 提供了这个,但 ProgressBar 覆盖了该方法并且在其自己的版本中没有注释。如果@RemotableViewMethod 未被继承,并且覆盖“撤消”注释,则可以解释您看到的症状。

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

      我会做一个笔记来尝试复制它,如果我看到同样的东西,我会在 Android issue tracker 上发布一个关于它的问题。

      【讨论】:

      • 感谢您提供信息和解决方法!仅供参考,我目前正在针对 1.5 SDK 进行编译,因此它可能已在更高版本中修复。
      • 可能不是,因为我在写答案时正在查看更新的代码(通过 Google 代码搜索)。
      • 从 API 级别 8 开始仍然无法正常工作。但是使用额外布局的技巧很有效:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多