转载请注明出处:http://blog.csdn.net/crazy1235/article/details/70173560
多主题下引用attr的问题。
在5.0以下手机,如果drawable xml文件中引用了attr ,则会出现类似下面的错误
04-14 14:43:06.413: W/System.err(13850): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jacksen.demo.view/com.jacksen.demo.view.selector.TestSelectorActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class RadioButton
04-14 14:43:06.413: W/System.err(13850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-14 14:43:06.413: W/System.err(13850): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2521)
04-14 14:43:06.413: W/System.err(13850): at android.app.ActivityThread.access$800(ActivityThread.java:172)
04-14 14:43:06.413: W/System.err(13850): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
04-14 14:43:06.413: W/System.err(13850): at android.os.Handler.dispatchMessage(Handler.java:110)
04-14 14:43:06.413: W/System.err(13850): at android.os.Looper.loop(Looper.java:193)
但是在5.0及以上手机上并没有问题。
经过排除法确定是 ?attr 的问题。
在stackoverflow上有关于该问题的讨论
http://stackoverflow.com/questions/30756729/android-selector-drawable-doesnt-work-with-attributes
这是一个5.0之前的系统bug。
在Google Issue Tracker网站上也有开发者提交此问题:
https://issuetracker.google.com/issues/36941443
解决方案:
其实也简单,不是在xml中,定义drawable时,引用?attr有问题嘛!那就不用?attr,直接通过@drawable的形式引用资源。
然后需要做的就是对每个主题定义一个drawable.xml
http://stackoverflow.com/questions/8041537/how-to-reference-style-attributes-from-a-drawable
作者:crazy1235 发表于2017/4/14 16:31:28 原文链接
阅读:316 评论:0 查看评论