android - 使用 9 patch drawable 动态更改 AppWidget 的背景

标签 android background-image drawable android-appwidget nine-patch

RemoteViews 类中没有setBackground() 方法,因此我使用了以下解决方法:

  1. 为我的应用小部件创建了一个 FrameLayout,并将 ImageView 作为背景 View 。
  2. 使用 setImageViewResource() 方法更改了 ImageView 图像。

不幸的是,对于 9-patch 可绘制对象,此方法不起作用。此外,当 ImageViewandroid:src 属性指向 9-patch - 它也不起作用。有什么方法可以使用 9-patch drawable 以编程方式更改 AppWidget 的背景图像吗?提前致谢。

编辑 在 XML 中将 9-patch 设置为初始背景:

<ImageView
    android:id="@+id/small_widget_layout_bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_lime" />

当我使用 android:src="@drawable/background_lime" 时,它没有正确拉伸(stretch)图像,这段代码工作正常。以及从 AppWidgetProvider onUpdate 方法更改背景的代码:

views.setImageViewResource(R.id.small_widget_layout_bg,
                    R.drawable.backgroung_lime);

这不会将图像拉伸(stretch)为 9 补丁。

最佳答案

这个答案在上面的评论中诊断出来了...

RemoteView 不允许访问 View.setBackground(),因此使用 android:src 属性的解决方法 ImageView 很好,前提是 android:scaleType 属性设置为 fitXY

ImageView 不会拉伸(stretch)它的前景图像,除非你告诉它。

关于android - 使用 9 patch drawable 动态更改 AppWidget 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392269/

相关文章:

android - 第一个布局可以是一个 fragment ?

java - 如何校准磁传感器?

android - 如果已经有 drawable - hpi, mdpi, xhdpi,xxhdpi, xxxhdpi,我们还需要 Android Resources 中的 drawable 文件夹吗

android - Intent 服务、内容提供者和加载器

css - 在单页滚动网站的一部分上创建随机背景

html - 你可以将一个div的信息设置为另一个div的背景图像吗?

ios - Chrome iOS 不使用视网膜背景图像

java - 更改自定义 ProgressBar 的大小

javascript - 使用四元数的设备方向

java - 如何让 Sprite 从 Android 中的 gameView 边缘反弹?