我升级到Android支持库23.2.0并添加了
vectorDrawables.useSupportLibrary = true
到我的build.gradle,以便我对apis低于21的矢量绘制支持。(详见here)。
我也替换了
android:src="@drawable/ic_create_black_24dp"
带
app:srcCompat="@drawable/ic_create_black_24dp"
在每个使用矢量绘图的Imageview中。
该应用程序编译并完美地运行,但代码分析报告:
错误:(56,9)为标记
ImageView
找到了意外的名称空间前缀“app”
为什么会这样?虽然我收到错误,为什么要编译呢?
编辑:我已添加
xmlns:app="http://schemas.android.com/apk/res-auto"
在我的根布局中。
答案 0 :(得分:22)
Lint,Android的代码分析工具,似乎并不知道支持向量drawables。您可以通过将tools:ignore="MissingPrefix"
添加到ImageView
代码来安全地忽略该错误。
答案 1 :(得分:2)
将XML中的ImageView更改为android.support.v7.widget.AppCompatImageView
答案 2 :(得分:1)
您看到此错误,因为原始ImageView没有srcCompat属性。此属性仅由AppCompatImageView使用,而是注入而不是您声明的ImageView。使用重载视图inflaters时很容易发现此错误。 Lint执行静态分析,不知道你可以用代码中的xml做的黑客攻击。
答案 3 :(得分:0)
需要将其添加到顶部父布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
答案 4 :(得分:0)
将xmlns:app="schemas.android.com/apk/res-auto"
属性添加到您的ImageView
或Top-Level
标记,例如LinearLayout
,CoordinatorLayout
,RelativeLayout
等等< / p>
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_create_black_24dp"
xmlns:app="http://schemas.android.com/apk/res-auto"/>
或在父版面
中<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"/>