Android Studio中显示图像但手机上没有显示

7

如下图所示,这是Android Studio的显示内容:

enter image description here

然而,当我在手机上运行此应用程序时,列表视图只显示一个空白图像(即 - 一个空格),在“彩虹之上”的位置。

列表视图正常工作,包括一个图片视图和两个文本视图。(如果有必要,可以使用此图像视图)如果这其中任何一个可能会干扰,那么我将在这里发布代码,但我认为这很难相信。

唯一不确定的一件事是,在单独的xml文件中定义列表视图的单元格时,是否可以使用相对视图。我不知道为什么不能,但这是我能想到的唯一问题。

基本上,Android Studio显示一切正常,但在手机/模拟器上并非如此。因此,我很难找到问题所在。

我是Android开发新手,所以请谅解。

编辑

该图像是.png格式,并位于drawable文件夹中。我还在drawable文件夹中有另一个.png图像,似乎没有问题。为什么会这样?原始图像显然没有损坏,因为它在Android Studio中显示出来了。

解决方案

由于大小原因,必须将图像移动到“mipmap-xxhdpi”文件夹中。


如果这不是解决方案,请查看我的答案并提供更多信息。 - Mathijs Segers
1
无论您的可绘制文件夹如何,都应该显示图像。可能还有其他问题。请提供更多信息或发布您的代码。 - Zahid
不是很有帮助,请提供XML布局。 - Lamorak
无论你的可绘制文件夹如何,图像都应该被显示出来。这似乎完全不正确。我进行了大量测试,如果图像尺寸过大或者在"drawable"文件夹中,并且它非常大,它根本不会显示(比如在Note上)。使用**"drawable-nodpi"**似乎可以使其像正常操作系统一样工作-它实际上会绘制出来。 - Fattie
9个回答

28

我遇到了同样的问题,并找到了以下答案: (来源: https://dev59.com/52Ml5IYBdhLWcg3woYIv#40397892)

我所做的是更改自动分配的键(通过拖放ImageView填充)从app:srcCompat="@drawable/logo"android:src="@drawable/logo",以在模拟器和设备上都显示,例如:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/logo"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="75dp"
    android:id="@+id/logoImageView"
    android:scaleType="fitXY"
    android:scaleX="1.5"
    android:scaleY="1.5" />

谢谢 @SamyMassoud。 - Andre Alexandre
@SamyMassoud 不应该。仅因为它是您的解决方案并不意味着它是 OP 的解决方案。 - Akaisteph7
不知怎么的,我最终使用了tools:srcCompat而不是上述两个之一——将其更改为app:srcCompat对我有用,因此我的结论是要注意有几种不同的选项,而Android Studio提供给你的可能无法正常工作。 - NickGlowsinDark

14

我今天遇到了同样的问题。首先检查图片的高度和宽度,然后根据这个把图片放入不同的drawable文件夹中。例如,如果图片尺寸为1280 x 840,则将图片放入drawable-xxhdpi文件夹中。


只有一个“drawable”文件夹。但是,是的,图像大小非常大,这显然是问题所在。 - Greg Peckory
问题已解决,需要将文件移动到“mipmap - xxhdpi”文件夹中。 - Greg Peckory
我会把你评为最佳答案,因为你指导了我正确的方向。 - Greg Peckory
如果您的图像太大,那么请使用通用图像加载器或Volley进行快速图像加载。 - Anand Savjani

3

最近我也遇到了同样的问题,请你检查一下它所在的文件夹。我的问题是将它放在drawable文件夹中,而实际上应该放在drawable-nodpi文件夹中。

请说明您遇到此问题的设备是什么,是否有多个设备出现此问题?

HTC One M8上的图片未显示

以下是相关答案。


谢谢您的快速回复。图像确实位于“drawable”文件夹中。它是png格式。我还有另一张图片也在“drawable”文件夹中,也是png格式。但是,后者似乎可以正常使用。因此,问题必须出在这个图像上。但是这有什么道理呢? - Greg Peckory
我也遇到了同样的问题,只有一张图片无法正常显示。你可以尝试将文件夹重命名为drawable-nodpi。我必须说我真的不知道为什么这样做有效,但它确实有效。 - Mathijs Segers
我将不得不更改所有对该文件夹的引用,那么我还要继续吗? - Greg Peckory
只需选择文件夹,按Shift F6,在Android Studio中即可为您修复引用,甚至可能无需重构即可完成修复。(在重命名类或变量时,请始终使用Shift F6;) - Mathijs Segers
“drawable-nodpi” 看起来运行良好...非常感谢 @MathijsSegers - Fattie

2

如果您使用android:srcapp:srcCompat,请改用android:background

android:background="@drawable/your_image"

2

我遇到了类似的问题。我的图片在网站上可以显示,但在Android设备上无法显示...

后来我进行了更改。

tools:srcCompat="@drawable/ic_wifi"

并将其替换为

app:srcCompat="@drawable/ic_wifi"

2
我可以确认,在查看图片时,将更大的图像放入高分辨率文件夹中对三星Galaxy S4有效。
我的问题在于高分辨率的drawable文件夹不存在。但是,如果您创建一个新文件夹并命名为drawable-xxhdpidrawable-(whateverxxxhdpi),将其放置在[path to your project folder]\app\src\main\res\,然后将您的图像放置在其中,它应该会起作用。

1
我遇到了类似的问题,但是我在我的清单文件中添加了以下内容: <application //这个对我有用。 android:hardwareAccelerated="false" //如果上一行没有解决问题,请添加这个。 android:largeHeap="true" android:theme="@style/AppTheme">

1

之前有一个重复的问题被问到了(我没有足够的积分来标记上面的问题为重复)在这里,Lukap建议将可绘制对象放入drawable-hdpi文件夹中,这对我有用。 显然,使用三个drawable文件夹(-hdpi、-mdpi、-ldpi)曾经是标准做法。

虽然将图像放入任何mipmap文件夹中也对我有用(然后当然要更改android:src ="@drawable/image"android:src ="@mipmap/image"),但App Resources的Android开发人员页面说,mipmap资源是用于“不同启动器图标密度的Drawable文件”。因此,将除了启动器图标以外的图像放入mipmap文件夹中似乎可以工作,但不符合Android惯例。

在我看来,如果图像未在唯一可用的drawable/文件夹中显示,似乎是一个错误,因为其他人建议使用drawable文件夹来存储所有不是应用程序图标的图像。在提供资源的Android开发者页面上,有一个部分讨论了Android使用的选择最佳匹配资源的方法,其中使用了几个可用的drawable资源的示例。

为了演示Android如何选择替代资源,请假设以下drawable目录包含相同图像的不同版本:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

并且假设以下是设备配置:

语言环境 = en-GB
屏幕方向 = port
屏幕像素密度 = hdpi
触摸屏类型 = notouch
主要文本输入法 = 12key

通过将设备配置与可用的替代资源进行比较,Android从drawable-en-port中选择可绘制对象。

如果只有一个drawable/文件夹,你可能会认为Android的“逻辑”会选择唯一可用的drawable资源。

0

我遇到了这个问题,通过在我的imageView xml代码中添加这个解决了它。

android:adjustViewBounds="true"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接