android - VectorDrawable 未显示或绘制错误

标签 android drawable android-drawable android-vectordrawable

我有 5 个 vectorDrawables,其中 3 个是从 google 给我的 PSD 生成的。 。

其中两个显示正确(均来自 PSD 生成的矢量),但另外两个在 API 21 上运行时根本不起作用,但在 API 26、27 上运行良好。

enter image description here

没有显示的两个向量看起来像这样

enter image description here

两个 ImageButton 看起来像这样:( full XML file )

  <ImageButton
    android:id="@+id/multiplayerButton"
    android:layout_width="0dp"
    android:layout_height="80dp"
    android:layout_marginTop="4dp"
    android:background="@drawable/rounded_corners"
    android:paddingBottom="2dp"
    android:paddingTop="2dp"
    android:scaleType="fitCenter"
    android:src="@drawable/button_multiplayer_icon"
    app:layout_constraintEnd_toEndOf="@id/guideline3"
    app:layout_constraintStart_toStartOf="@id/guideline2"
    app:layout_constraintTop_toBottomOf="@id/startButton" />

    <ImageButton
    android:id="@+id/achievementButton"
    android:layout_width="0dp"
    android:layout_height="80dp"
    android:layout_marginStart="2dp"
    android:layout_marginTop="4dp"
    android:background="@drawable/rounded_corners"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:scaleType="fitCenter"
    android:src="@drawable/button_achievements_icon"
    app:layout_constraintEnd_toEndOf="@id/multiplayerButton"
    app:layout_constraintStart_toEndOf="@id/highscoreButton"
    app:layout_constraintTop_toBottomOf="@id/multiplayerButton" />

矢量看起来是这样的

<vector android:height="24dp" android:viewportHeight="512"
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/menu_buttons" android:name="ic multiplayer"
    android:pathData="m468.9 41.5 -73.1 15.5 -127.2 139.4 43.1 47.3 141.6 -129.2 15.5 -73.1zm-267.5 228.6 -55.8 61.2 -28.7 -28.7 -28.8 28.7 20 20 -69.5 69.5 51.6 51.6 69.4 -69.5 19.4 19.3 28.7 -28.7 -28.7 -28.7 63 -57.5 -40.7 -37.2zm-158.4 -228.6 15.6 73.1 274.3 250.3 -28.7 28.7 28.8 28.8 19.3 -19.3 69.5 69.5 51.6 -51.6 -69.4 -69.5 20 -20 -28.8 -28.7 -28.7 28.7 -250.3 -274.3 -73.1 -15.5z"/>

功能区矢量 xml 文件如下所示

<vector android:height="24dp" android:viewportHeight="512"
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/menu_buttons" android:name="ic achievements"
    android:pathData="m256.3 343.9 47.2 21.9 23 -34.2 55.3 104 -69.8 68.3 -55.7 -160zm-0.7 0 -47.2 21.9 -22.9 -34.2 -55.3 104 69.8 68.3 55.7 -160zm0.3 -296.5 43.1 -20 27.4 38.9 47.3 4.2 4.2 47.4 38.9 27.3 -20 43.1 20 43.1 -38.9 27.4 -4.2 47.3 -47.3 4.2 -27.4 38.9 -43.1 -20 -43.1 20 -27.4 -38.9 -47.3 -4.2 -4.2 -47.3 -38.9 -27.4 20 -43.1 -20 -43.1 38.9 -27.3 4.2 -47.4 47.3 -4.2 27.4 -38.9 43.1 20zm0.2 48.5c-50.8 0 -92.1 41.2 -92.1 92c0 50.9 41.2 92.1 92.1 92.1c50.8 0 92 -41.2 92 -92.1c0 -50.8 -41.2 -92 -92 -92z"/>

其中变量 menu_buttons 定义为 #FFC107,位于 colors.xml

最佳答案

VectorDrawable添加到 API 级别 21。

Support Library 23.2 or higher provides full support to Vector Drawables and Animated Vector Drawables on devices running Android 5.0 (API level 21) or lower.

你应该使用

 app:srcCompat="@drawable/your_vector_image"

您需要将 vectorDrawables.useSupportLibrary = true 添加到 build.gradle 文件中:

// Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 } 

仅供引用

app:srcCompat attribute to reference vector drawables as well as any other drawable available to android:src.

关于android - VectorDrawable 未显示或绘制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148616/

相关文章:

Android:高级ColorPickerDialog

android - 如何在 SQLite (Android) 中存储可绘制/位图

安卓开发 : Unable to create an icon @drawable/ic_action_search

android - 如何在自定义适配器类中使用联系人填充 ListView?

android - 在真实设备上进行测试时,uses-library com.android.nfc_extras 会破坏 API 26 及更高版本的 AndroidTest

android - 计算可绘制文件夹中以特定字符串开头的项目

java - android:如何检查可绘制图像?

Android:使用 shape.xml 显示像阴影一样的渐变

Android getResources().getDrawable() 已弃用 API 22

android - 使用isbndb android提取书籍封面