Android 4.0或更高版本中drawables颜色的奇怪行为

时间:2013-01-14 10:37:05

标签: android android-drawable

我的android资源有一个奇怪的问题。我在Android 2.2 (android:minSdkVersion="8")上创建了应用。该应用程序工作正常。

当我在Android 4.0上安装app时,应用程序运行正常,但是在第一次运行时,一些资源会被更改。

例如,我有一个名为primary_color的可绘制颜色,它指的是#FFFFFF html颜色。安装后,系统呈现黑色而不是白色。在某些情况下,@android:color/white呈现黑色。

强制关闭应用并重新启动应用解决此问题。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

这是由Android版本4.0到4.1.3中的一个错误引起的,我一直在测试类似的问题,drawables仅在具有这些版本的设备上变为黑色,它在Android版本的设备中不存在> 4.2。

我确定你在自己的研究中注意到它但似乎没有正确记录,并且没有正式的解决方案,但我可以提供一些解决方法:

1)关闭硬件加速,我为我的问题使用了不同的解决方案但是已知这可以解决上述Android版本中的图像的一些问题。如果您希望为应用程序启用硬件加速,则可以通过将其添加到清单中的活动声明来禁用问题活动。

<activity
 android:name="activityName"
 android:hardwareAccelerated="false"/>

2)对于特定于您的示例的解决方案,请尝试将颜色设置为@android:color/transparent,这解决了我需要背景可绘制以保持白色的问题。

3)请参阅此处:http://code.google.com/p/android/issues/detail?id=34619以查看类似的,已记录的错误,其中一些解决方案也适用于您的问题。

HTH

答案 1 :(得分:0)

我遇到了同样的问题! 我在colors.xml

上有这个
 <resources>
    <color name="white">#ffffffff</color>
 </resources>

在styles.xml上

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="android:windowBackground">@color/white</item>
</style>

问题是当在活动中使用片段(包含ListView)时,ListView在第一次运行时显示白色作为背景(这是我需要的),但在第二次运行时,ListView背景是黑色的。这个问题只存在于Android 4.0上(我没有在4.1上测试),但在Android 4.3,4.4,5等上运行良好。

原来只有白色有问题,当使用白色以外的颜色时,没有黑色背景问题!

因为我想要一个白色背景并且我不想透支具有多个背景因此设置白色作为styles.xml上的windowBackground很重要但同时它会导致黑色背景问题!

所以作为解决方案,我创造了另一种颜色,它不是完全白色而是白色

<resources>
    <color name="fakewhite">#fffefefe</color>
</resources>

在styles.xml上

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@color/fakewhite</item>
</style>

因此,对于像ListView这样的视图,简短的颜色#ffffffff被转换为#00000000,我也注意到ScrollView上的这种行为。 这可能不是一个完美的解决方案,但它对我有用!