无法将以 SVG 开头的可绘制对象添加到 TextView for Android API 降低了 21

Unable to add drawable start with SVG to TextView for Android API lowers that 21

我正在尝试像这样在 textView 中使用 drawable

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/svg_ic_profile_logout"
    android:drawablePadding="20dp"
    android:drawableStart="@drawable/svg_ic_profile_logout"
    android:gravity="center_vertical"
    android:onClick="@{viewModel.onLogoutClick}"
    android:text="@string/profile_logout"/>

但我使用的图标是 SVG,它在 API > 21 时工作得很好,但在 API 级别低于 21 时会崩溃。

在你的应用级别build.gradle添加vectorDrawables.useSupportLibrary = true如下:

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

参考this guide.

  1. 如果您的 activity 扩展 FragmentActivity,则扩展 AppCompatActivity

  2. 如果有例外:android.view.InflateException: Binary XML file line #100: Error inflating class TextViewTextViewandroid:drawableLeft="@drawable/ic_svg_image",那么按照.

按照此处所述设置 SVG 支持,并将您的 SVG 图像包装在 selectorlayer-list:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_svg_image" />
</selector>

然后改为android:drawableLeft="@drawable/svg_image_selector",其中svg_image_selector是上面创建的XML。