【问题标题】:Android Widget use app:srcCompat for ImageViewAndroid Widget 使用 app:srcCompat for ImageView
【发布时间】:2026-01-18 03:20:09
【问题描述】:

我有带有 ImageView 的小部件。当我使用 android:srcImageView 设置图像时一切正常,但是当我使用 app:srcCompat 图像时不显示。 有没有办法在 Android Widget 中使用 app:srcCompat?

在我的项目中设置:

xmlns:app="http://schemas.android.com/apk/res-auto"

android {  
 defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
    }
}


  minSdkVersion 24
  targetSdkVersion 29

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    我认为这是不可能的。 ImageView 实际上没有app:srcCompat 属性(请参阅here)。 您通常能够使用它的原因是,当您使用 appcompat 库时,ImageView 会自动替换为 AppCompatImageView。但是,这不适用于小部件,因为它们基于 RemoteViews。如您所见,使用 RemoteViews 您只能使用 ImageView 而不能使用 AppCompatImageView。即使您将 appcompat 库添加到您自己的应用程序,问题是您的小部件的 RemoteViews 对象将被交给将显示小部件的应用程序的进程(通常是启动器),我们不能假设 appcompat 到可用。

    您是否因为矢量资产存在问题而尝试使用 appcompat?如果您描述了您遇到的问题,也许我们可以找到一种方法使其与常规 ImageView 一起使用。

    【讨论】:

    • 我正在使用带有渐变的矢量资产。我的最小值是 api 23。那么如果我使用 android:src 可以吗?
    【解决方案2】:

    如果是<ImageView>,请尝试<androidx.appcompat.widget.AppCompatImageView>

    【讨论】: