【问题标题】:InflateException: Error inflating class ImageView for VectorDrawableCompatInflateException:为 VectorDrawableCompat 膨胀类 ImageView 时出错
【发布时间】:2015-09-06 06:21:25
【问题描述】:

VectorDrawableCompat 终于进入了 SDK 23 的支持库。但它似乎不起作用,或者我可能遗漏了一些东西。

drawable/mypic.xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="64dp"
android:width="64dp"
android:viewportHeight="600"
android:viewportWidth="600" >
<group
    android:name="rotationGroup"
    android:pivotX="300.0"
    android:pivotY="300.0"
    android:rotation="45.0" >
    <path
        android:name="v"
        android:fillColor="#000000"
        android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
</group>
</vector>

fragment_bla.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/mypic"
    android:scaleType="centerCrop" />

</FrameLayout>

此代码适用于 Lollipop,但不适用于 KitKat。我错过了什么?


例外:

09-06 14:26:53.637  31820-31820/com.bla E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.bla, PID: 31560
android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.ImageView
        at android.view.LayoutInflater.createView(LayoutInflater.java:623)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:400)
        at com.hohero.fragment.Intro1Fragment.onCreateView(Intro1Fragment.java:14)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)

【问题讨论】:

  • 在您在 logcat 中发布的任何内容之后是否有 caused by 行?
  • 您确定它涉及到支持库吗?我在支持库的更新日志中找不到它
  • @Bhargav 不,剩下的只是低级的 Android 东西
  • developer.android.com/tools/support-library/index.html ,也许我真的错过了,你能指点我吗?
  • @DerekFung 不知道为什么没有提到它,就像他们不希望人们使用它一样:D 我从stackoverflow.com/a/29943417/193550 知道它,但自己查看它的最佳方式是下载 23.0.1从 SDK 管理器,然后在 Android Studio 中 Ctrl+N 为VectorDrawableCompat :)

标签: android android-vectordrawable


【解决方案1】:

我相信问题是 android:src="@drawable/mypic" 在您的 imageView 设置中。

将其更改为 app:srcCompat="@drawable/mypic"

那么你应该很高兴。

更多详情,请参考: https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.mvuq06x1k

【讨论】:

  • Daaaaamn!! =DDD 我喜欢stackoverflow! :D
【解决方案2】:

好吧,我阅读了代码并让它工作了。有几点需要注意:

  1. xml 文件必须在 raw 目录中,不可绘制
  2. xml 必须非常简单。看起来它支持单个 元素

对我来说,它总是有红色背景,而且缩放似乎不能正常工作。我刚刚使用了 Studio Collection 中的 Vector Asset Action -> (lock)。

    final Drawable drawable = VectorDrawableCompat.createFromResource(getResources(), R.raw.ic_lock_outline_24dp);
    imageView.setImageDrawable(drawable);

这是一个良好的开端和有趣的游戏!

链接到未知分支中的 Google 源: https://android.googlesource.com/platform/frameworks/support/+/d573775216408a88e796cd74abf8ab018488c2a3/v7/vectordrawable/src/android/support/v7/graphics/drawable

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多