使用ImageView和支持库25.3对RemoteView进行充气 - > 26+ AppCompatImageView

时间:2017-10-10 17:29:49

标签: android android-support-library android-appcompat remoteview android-remoteview

我有一个RemoteViews实例,从另一个应用程序接收为parcelable数据。我不能简单地改变服务结果(仍然必须提供向后兼容性)。 收到的RemoteViews有一个简单的布局:一个LinearLayout容器,里面有TextView和一个ImageView。图像视图带有位图图像集。 到目前为止,通过调用remoteView.apply(Context context, ViewGroup parent)来扩展该远程视图,然后将生成的视图添加到屏幕上的另一个布局中。

此时将支持库更新到最新版本:在我的情况下从25.3.1到26.1.0,调用remoteView.apply(Context, ViewGroup)开始抛出异常:

android.widget.RemoteViews$ActionException: view: android.support.v7.widget.AppCompatImageView can't use method with RemoteViews: setImageBitmap(class android.graphics.Bitmap)

这似乎是由AppCompatImageView的RemotableViewMethod上缺少setImageBitmap()注释引起的。也许它在支持26+中删除或从未存在,因为AppCompatImageView不适用于RemoteViews ... 似乎在支持库(23.1.0)的先前版本中,“setImageResource(int)”和“setBackgroundResource(int)”以相同的方式启动失败:https://issuetracker.google.com/issues/37071559

我想要了解的是:

  • 它是否按预期工作?我想是的,但是接着:
  • 如何解决这个问题? (可能我错过了什么......)或者:
  • 当使用RemoteViews.apply(Context, ViewGroup)通知RemoteViews时,有没有办法避免让AppCompatimageViews而不是简单的ImageView膨胀?提供给apply方法的上下文是“AppCompatActivity”。

我能够找到的唯一“解决方案”(一种丑陋的解决方法)是使用反射从RemoteView检索位图数据,然后在我自己的布局中使用该图像。 (而不是对RemoteView进行充气并将所有内容添加到布局中)。

提前致谢

0 个答案:

没有答案