使用矢量可绘制色调颜色选择器放大视图时崩溃 [英] Crash during inflating view with vector drawable tint color selector

查看:22
本文介绍了使用矢量可绘制色调颜色选择器放大视图时崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用带有色调颜色选择器的矢量可绘制

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/gray_ef" android:state_enabled="false"/>
    <item android:color="@color/gray_ef" android:state_pressed="true"/>
    <item android:color="@color/app_main_blue"/>
</selector>

样式声明:

 <style name="SocialButton">
        <item name="android:layout_width">0dp</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_weight">1</item>
        <item name="android:adjustViewBounds">true</item>
        <item name="android:background">@drawable/into_social_bg</item>
        <item name="android:tint">@color/intro_social_tiny</item>
        <item name="android:clickable">true</item>
        <item name="android:layout_marginLeft">1dp</item>
        <item name="android:layout_marginRight">1dp</item>
    </style>

和布局XML中的声明

<ImageView
            android:id="@+id/tw_ImageView_AddSocialFragment"
            style="@style/SocialButton"
            app:srcCompat="@drawable/v_soc_tw"/>

它在API 21+设备上运行良好,但在更低版本上出现错误:

android.view.InflateException: Binary XML file line #15: Error inflating class ImageView
                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                         at com.cs.liker.ui.intro.AddSocialFragment.onCreateView(AddSocialFragment.java:56)
                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                         at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
                                                         at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164)
                                                         at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
                                                         at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608)
                                                         at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570)
                                                         at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:1019)
                                                         at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2978)
                                                         at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:279)
                                                         at com.cs.liker.ui.intro.IntroActivity.checkViewPagerCount(IntroActivity.java:79)
                                                         at com.cs.liker.ui.intro.IntroActivity.moveNextScreen(IntroActivity.java:66)
                                                         at com.cs.liker.ui.intro.LicenseFragment.click(LicenseFragment.java:34)
                                                         at com.cs.liker.ui.intro.LicenseFragment$$ViewBinder$1.doClick(LicenseFragment$$ViewBinder.java:17)
                                                         at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
                                                         at android.view.View.performClick(View.java:4463)
                                                         at android.view.View$PerformClick.run(View.java:18770)
                                                         at android.os.Handler.handleCallback(Handler.java:808)
                                                         at android.os.Handler.dispatchMessage(Handler.java:103)
                                                         at android.os.Looper.loop(Looper.java:193)
                                                         at android.app.ActivityThread.main(ActivityThread.java:5333)
                                                         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:828)
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
                                                         at dalvik.system.NativeStart.main(Native Method)
                                                      Caused by: java.lang.NumberFormatException: Invalid int: "res/color/intro_social_tiny.xml"
                                                         at java.lang.Integer.invalidInt(Integer.java:137)
                                                         at java.lang.Integer.parse(Integer.java:374)
                                                         at java.lang.Integer.parseInt(Integer.java:365)
                                                         at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:122)
                                                         at android.content.res.TypedArray.getInt(TypedArray.java:255)
                                                         at android.widget.ImageView.<init>(ImageView.java:155)
                                                         at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:57)
                                                         at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:53)
                                                         at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                         at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:963)
                                                         at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1022)
                                                         at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                         at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:172)
                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684)
                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                         at com.cs.liker.ui.intro.AddSocialFragment.onCreateView(AddSocialFragment.java:56) 
                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                                                         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                                                         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                                                         at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 
                                                         at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164) 
                                                         at android.support.v4.view.ViewPager.populate(ViewPager.java:1177) 
                                                         at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608) 
                                                         at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570) 
                                                         at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:1019) 
                                                         at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2978) 
                                                         at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:279) 
                                                         at com.cs.liker.ui.intro.IntroActivity.checkViewPagerCount(IntroActivity.java:79) 
                                                         at com.cs.liker.ui.intro.IntroActivity.moveNextScreen(IntroActivity.java:66) 
                                                         at com.cs.liker.ui.intro.LicenseFragment.click(LicenseFragment.java:34) 
                                                         at com.cs.liker.ui.intro.LicenseFragment$$ViewBinder$1.doClick(LicenseFragment$$ViewBinder.java:17) 
                                                         at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22) 
                                                         at android.view.View.performClick(View.java:4463) 
                                                         at android.view.View$PerformClick.run(View.java:18770) 
                                                         at android.os.Handler.handleCallback(Handler.java:808) 
                                                         at android.os.Handler.dispatchMessage(Handler.java:103) 
                                                         at android.os.Looper.loop(Looper.java:193) 
                                                         at android.app.ActivityThread.main(ActivityThread.java:5333) 
                                                         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:828) 
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 
                                                         at dalvik.system.NativeStart.main(Native Method) 

我是矢量绘图新手,有人能给我解决这个问题的建议吗?

推荐答案

如果要将选择器与VectorDrawables一起使用,则需要添加以下内容:

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

到您要在Android 5以下版本的设备上使用VectorDrawables的每个活动。

这篇关于使用矢量可绘制色调颜色选择器放大视图时崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆