首页 文章

在TextView中使用矢量图像左侧可绘制导致力关闭?

提问于
浏览
2

我在textview的左侧drawable上使用了一个矢量文件:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M7,10l5,5 5,-5z"/>
</vector>

这导致Android版本低于5.0(此FC)强行关闭 .

Caused by: android.content.res.Resources$NotFoundException: File res/drawable-nodpi-v4/ic_arrow_drop_down.xml from drawable resource ID #0x7f0200ac
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector

它在Android 5.0版上运行良好 .

致命异议:主要

Process: com.SocialMob, PID: 2681
                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{com.SocialMob/com.SocialMob.Activities.MusicPlayerTwoActivity}: android.view.InflateException: Binary XML file line #38: Error inflating class <unknown>
                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412)
                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
                                             at android.app.ActivityThread.access$900(ActivityThread.java:174)
                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                             at android.os.Looper.loop(Looper.java:146)
                                             at android.app.ActivityThread.main(ActivityThread.java:5593)
                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                             at java.lang.reflect.Method.invoke(Method.java:515)
                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                             at dalvik.system.NativeStart.main(Native Method)
                                          Caused by: android.view.InflateException: Binary XML file line #38: Error inflating class <unknown>
                                             at android.view.LayoutInflater.createView(LayoutInflater.java:626)
                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
                                             at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                             at com.SocialMob.Activities.MusicPlayerTwoActivity.onCreate(MusicPlayerTwoActivity.java:86)
                                             at android.app.Activity.performCreate(Activity.java:5458)
                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470) 
                                             at android.app.ActivityThread.access$900(ActivityThread.java:174) 
                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                             at android.os.Looper.loop(Looper.java:146) 
                                             at android.app.ActivityThread.main(ActivityThread.java:5593) 
                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                             at java.lang.reflect.Method.invoke(Method.java:515) 
                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                             at dalvik.system.NativeStart.main(Native Method) 
                                          Caused by: java.lang.reflect.InvocationTargetException
                                             at java.lang.reflect.Constructor.constructNative(Native Method)
                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
                                             at android.view.LayoutInflater.createView(LayoutInflater.java:600)
                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
                                             at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                             at com.SocialMob.Activities.MusicPlayerTwoActivity.onCreate(MusicPlayerTwoActivity.java:86) 
                                             at android.app.Activity.performCreate(Activity.java:5458) 
                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 
                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470) 
                                             at android.app.ActivityThread.access$900(ActivityThread.java:174) 
                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                             at android.os.Looper.loop(Looper.java:146) 
                                             at android.app.ActivityThread.main(ActivityThread.java:5593) 
                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                             at java.lang.reflect.Method.invoke(Method.java:515) 
                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                             at dalvik.system.NativeStart.main(Native Method) 
                                          Caused by: android.content.res.Resources$NotFoundException: File res/drawable-nodpi-v4/ic_arrow_drop_down.xml from drawable resource ID #0x7f0200ac
                                             at android.content.res.Resources.loadDrawable(Resources.java:3443)
                                             at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
                                             at android.widget.TextView.<init>(TextView.java:1229)
                                             at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:60)
                                             at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:56)
                                             at com.SocialMob.CustomViews.CustomTextView.<init>(CustomTextView.java:22)
                                             at java.lang.reflect.Constructor.constructNative(Native Method) 
                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                             at android.view.LayoutInflater.createView(LayoutInflater.java:600) 
                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
                                             at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                             at com.SocialMob.Activities.MusicPlayerTwoActivity.onCreate(MusicPlayerTwoActivity.java:86) 
                                             at android.app.Activity.performCreate(Activity.java:5458) 
                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 
                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470) 
                                             at android.app.ActivityThread.access$900(ActivityThread.java:174) 
                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                             at android.os.Looper.loop(Looper.java:146) 
                                             at android.app.ActivityThread.main(ActivityThread.java:5593) 
                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                             at java.lang.reflect.Method.invoke(Method.java:515) 
                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                             at dalvik.system.NativeStart.main(Native Method) 
                                          Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
                                             at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:986)
                                             at android.graphics.drawable.Drawable.createFromXml(Drawable.java:930)
                                             at android.content.res.Resources.loadDrawable(Resources.java:3439)
                                             at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                                             at android.widget.TextView.<init>(TextView.java:1229) 
                                             at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:60) 
                                             at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:56) 
                                             at com.SocialMob.CustomViews.CustomTextView.<init>(CustomTextView.java:22) 
                                             at java.lang.reflect.Constructor.constructNative(Native Method) 
                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                             at android.view.LayoutInflater.createView(LayoutInflater.java:600) 
                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
                                             at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                             at com.SocialMob.Activities.MusicPlayerTwoActivity.onCreate(MusicPlayerTwoActivity.java:86) 
                                             at android.app.Activity.performCreate(Activity.java:5458) 
                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 
                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470) 
                                             at android.app.ActivityThread.access$900(ActivityThread.java:174) 
                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                             at android.os.Looper.loop(Looper.java:146) 
                                             at android.app.ActivityThread.main(ActivityThread.java:5593) 
                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                             at java.lang.reflect.Method.invoke(Method.java:515) 
                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                             at dalvik.system.NativeStart.main(Native Method) 

1 回答

  • 1

    根据这个blog post解决这个bug的方法是创建一个引用向量的可绘制资源文件:

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

    ,这解决了我的问题 . 另见:Using android vector Drawables on pre Lollipop crash .

相关问题