2015-10-07 64 views
1

是否有最低的Android版本要求来访问此颜色或什么?我需要将对象的背景颜色设置为'默认'背景颜色,'?android:colorBackground'在我的Nexus 5(Android 5.1.1)上运行良好,但它会崩溃我的笔记。使用“?android:colorBackground”作为颜色在Galaxy Note 3(4.4.2)上崩溃我的应用程序,但不是Nexus

我有一个名为绘制editor_border.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> 

我用这个绘制作为背景的布局。当充气的布局,我有如下因素错误”

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

张贴错误的logcat的。它在哪里崩溃?少量代码会有帮助 –

+0

完成 - 提供更多详细信息 – Prodigga

回答

1

自定义的属性drawable资源似乎只能从API 21工作。我无法找到源代码来支持此操作,但来自Google I/O Schedule应用程序a commit演示了此操作。

A wo rkaround将有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> 
+0

很好的回复,尽管这种方式会让我再次陷入深度,因为这一点与当前主题背景颜色(设备默认值)相匹配。这根据设备而改变。对颜色值进行硬编码意味着我的背景颜色不会根据主题而改变。 – Prodigga

+0

在这种情况下,您将不得不为每个主题使用不同的drawable(硬编码不同的颜色)。当我试图在我的应用程序中支持动态主题时,我发现了这一点。 – hidro

+0

但是每个供应商都有不同的主题 - 三星银河系,nexus系列,xperia系列等等!我想我只是硬编码这些“旧设备”的颜色? (前21) – Prodigga

相关问题