ImageView PNG被Galaxy S5 Lollipop上的默认Android图标取代

时间:2015-03-11 00:39:20

标签: android android-5.0-lollipop

我有一个非常简单的活动显示图像:

<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" >

   <ImageView
      android:id="@+id/my_image"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:src="@drawable/activation_background" />

</RelativeLayout>

my_image.png仅在/res/drawable-xhdpi/,它对我迄今为止尝试过的所有手机都运行良好,除了带有Lollipop的Galaxy S5(它正在开发4.4)。在这个特定的手机和版本上,ImageView显示的是一种默认的Android图标,甚至不在我的项目中。

要解决此问题,我需要将my_image.png放入/res/drawable-xxhdpi/。但我不明白这种行为。它在Nexus 6上工作正常,无需这样做。这是S5的5.0版本的已知问题吗?有没有其他方法可以做到而不是将图像移动到drawable-xxhdpi

3 个答案:

答案 0 :(得分:2)

好吧,你应该为每个尺寸的屏幕创建drawable。 Android Studio有一个工具可以为您完成此操作 - 右键单击​​drawable并选择new - &gt;图像资产

否则,在Lollipop中,我相信支持矢量图形 - 请点击此处: https://developer.android.com/training/material/drawables.html

答案 1 :(得分:1)

如果您能够以xxhdpi分辨率提供图像,那么您一定要添加它。最佳做法是在mdpi,hdpi,xhdpi和xxhdpi文件夹中定义所有图形。

否则解决方法是简单地在xhdpi文件夹中复制图像并将其添加到xxhdpi文件夹中。这样,xxhdpi上的手机仍然会有一个可绘制的资源来加载。

答案 2 :(得分:0)

我问题的解决方案有点奇怪。我通过简单地将drawable activation_bg重命名为something_activation_bg来修复它。请注意,activation_bg以外的任何内容均有效,但导致同一问题的activation_background除外。

我不知道为什么这个问题特别适用于Galaxy S5的Lollipop版本。应用程序外部应该没有任何冲突,所以它真的很奇怪。