是否有最低安卓版本要求才能访问此颜色或其他内容?我需要将对象的背景颜色设置为'默认'背景颜色和'?android:colorBackground'在我的Nexus 5(Android 5.1.1)上运行良好,但它正在崩溃我的笔记。
我有一个名为editor_border.xml的drawable,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- content background -->
<item>
<shape>
<solid android:color="?android:colorBackground" />
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
我使用这个drawable作为布局的背景。在给布局充气时,我的应用程序崩溃了下面的错误&#34;
10-07 22:23:52.634: E/AndroidRuntime(6512): android.view.InflateException: Binary XML file line #11: Error inflating class <unknown>
进一步向下
10-07 22:23:52.634: E/AndroidRuntime(6512): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v4/editor_border.xml from drawable resource ID #0x7f020005
10-07 22:23:52.634: E/AndroidRuntime(6512): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
删除颜色或将其更改为任何其他颜色都可以。
答案 0 :(得分:1)
可绘制资源中的自定义属性似乎只能在API 21中使用。我无法找到备份来源,但Google I / O计划应用中的a commit会证明这一点。
解决方法是拥有2个不同的可绘制资源,一个用于API 21+,另一个用于21之前,您不应使用自定义属性。
<强>抽拉/ background.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- content background -->
<item>
<shape>
<solid android:color="@color/your_color" />
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
<强>绘制-V21 / background.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- content background -->
<item>
<shape>
<solid android:color="?android:colorBackground" />
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>