升级Android支持库23.2.0后的代码分析错误(意外的名称空间前缀)

时间:2016-02-25 10:24:38

标签: android android-support-library

我升级到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"

在我的根布局中。

5 个答案:

答案 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"属性添加到您的ImageViewTop-Level标记,例如LinearLayoutCoordinatorLayoutRelativeLayout等等< / 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"/>