Android 开发 Tip 2 -- 多主题下drawable.xml使用?attr的问题

    xiaoxiao2021-04-19  77


    转载请注明出处: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

    转载请注明原文地址: https://ju.6miu.com/read-675834.html

    最新回复(0)