app:srcCompat - 矢量绘图显示在设计预览中,但不显示在应用程序中

Posted

技术标签:

【中文标题】app:srcCompat - 矢量绘图显示在设计预览中,但不显示在应用程序中【英文标题】:app:srcCompat - Vector drawable shows up in design preview, but doesn't show up in app 【发布时间】:2016-07-13 06:20:35 【问题描述】:

drawable/information.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:
        android:
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0,0 0,2 12A10,10 0,0 0,12 22A10,10 0,0 0,22 12A10,10 0,0 0,12 2Z"/>
</vector>

LayoutofCardView.xml

<ImageView
    android:layout_
    android:background="#f00"
    android:layout_
    android:id="@+id/informationImageView"
    app:srcCompat="@drawable/information"
    tools:src="@drawable/information"
    />

build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig 
        applicationId "com.company"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        generatedDensities = []

    
    aaptOptions 
        additionalParameters "--no-version-vectors"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    packagingOptions 
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:cardview-v7:23.2.1'
    compile 'com.android.support:recyclerview-v7:23.2.1'
    compile 'com.android.support:support-v4:23.2.1'

图像在 android studio 的设计窗格中正确显示。但是当我运行应用程序时,图像没有显示出来。图片在cardView中,在recyclerviewfragment中。其他项目正确渲染只有矢量drawbles不渲染。

另外,布局文件中会显示 Lint 错误

unexpected namespace prefix "app" found for tag ImageView app:srcCompat

【问题讨论】:

【参考方案1】:

将这一行 vectorDrawables.useSupportLibrary = true 作为 defaultConfig 语句的一部分插入到您的 build.graddle 文件中。我已经使用了here 提供的描述并且它有效。认为您必须意识到 Gradle 2.0+ 和 Gradle 1.5 的配置看起来不同。

无论您使用的是什么 Gradle 版本,您都必须确保您的活动必须扩展 AppCompatActivity 以提供矢量支持。

【讨论】:

会调查并回复您。我在上一个项目中遇到了这个问题。谢谢! 浪费了关键的 2 小时,然后偶然发现了这一点。非常感谢。【参考方案2】:

当我遇到您的问题时,我找到了这个答案。 快速回答是您应该使用 android.support.v7.widget.AppCompatImageViewapp:srcCompat

这个link解释一下。

【讨论】:

以上是关于app:srcCompat - 矢量绘图显示在设计预览中,但不显示在应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

Android 布局 XML 中 app:srcCompat 和 android:src 的区别

Sketch Mac版是一个创新和新的眼光看待矢量绘图软件

CDR是什么?CorelDRAW矢量绘图

在 ANDROID NOUGAT 上显示模糊图像的矢量绘图

macOS软件-Sketch 64 CR2专业的矢量绘图工具

优秀的矢量绘图和图形设计工具Amadine for Mac 1.0