处理Android 2.3.5与4.0的形状可绘制差异的最佳方法

Joa*_*und 5 android

我试图用这种形状绘制一个形状:

在此输入图像描述

使用以下内容时,这在1.6到2.3.5中正常工作:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle"> 
<solid android:color="#cc6900"/>

<corners android:radius="0.1dp" android:bottomRightRadius="7dp" android:bottomLeftRadius="0dp"
 android:topLeftRadius="0dp" android:topRightRadius="7dp"/> 
Run Code Online (Sandbox Code Playgroud)

但是,当在Galaxy Nexus或4.0 Emulator上运行它时,我必须使用它来获得相同的布局:

...
<corners android:radius="0.1dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="7dp"
 android:topLeftRadius="0dp" android:topRightRadius="7dp"/> 
...
Run Code Online (Sandbox Code Playgroud)

这给了我这个1.6:

在此输入图像描述

所以基本上,以前的版本都以一种方式使用了bottomRight和bottomLeft,现在4.0在另一种方式中使用了它.

是否有任何简单的方法可以让它像4.0之前的版本一样,并为4.0用户提供更改后的值?如果可能的话,我更愿意,如果我可以将它保存在XML中,而不是在代码中.

ada*_*amp 12

嗯,看起来我们在修复那个时破坏了bug兼容性.;)

由于您是在XML drawable中定义的,因此请在您的res/drawable/目录中包含Android 4.0之前的版本,并在另一个目录中包含适用于Android 4.0+的版本res/drawable-v14/.(14是Android 4.0的API级别.)运行Android 4.0及更高版本的设备将使用更新版本.

您可以使用相同的技术让系统为一堆不同的配置选项自动选择正确的资源,有关详细信息,请参阅此处:http://developer.android.com/guide/topics/resources/providing-resources. HTML#AlternativeResources