在 API 21+ 上使用带有 srcCompat 的 VectorDrawables 将 Android 支持库更新到 23.2.0

Update Android Support Library to 23.2.0 using VectorDrawables with srcCompat on API 21+

很高兴 pre-lollipop 设备现在可以通过支持库 23.2.0 使用 VectorDrawables。虽然我在 API 21+ 上有图像显示问题,但在低端设备上一切正常。我正在使用 Gradle 插件 1.5,所以我的 build.gradle 包含这个:

// Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 }  

然后我在布局中使用下一个代码:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srcCompat="@drawable/my_vector_drawable" />

我在 parent 的 ViewGroup 中声明了这个属性:

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

但仍然 Android Studio 显示此错误,但项目可以构建并且 运行

"Unexpected namespace prefix "app" found for tag ImageView"

这就是我在 Android 4.3 上得到的结果:

和Android 5.1:

是新支持库的bug还是我做错了什么?

"Unexpected namespace prefix "app" found for tag ImageView"

您必须在布局中声明命名空间(通常在根元素中):

<ImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srcCompat="@drawable/my_vector_drawable" />

为了解决您的图像缩放问题,您是否尝试过将 scaleType='fitXY' 设置为您的 ImageView?

(您现在可以安全地忽略该 Lint 错误,同时将 tools:ignore="MissingPrefix" 添加到您的 ImageView)。