ImageView在布局中显示但在实际设备上不显示

51

我有一个 ImageView,想要显示匹配设备的全宽度,我是这样实现的:

<ImageView
    android:id="@+id/home_bar_newvault"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:scaleType="centerCrop"
    android:layout_alignParentBottom="true"
    android:src="@drawable/home_bar" />

home_bar是一个PNG图像文件,尺寸为2399x254。当我选择查看UI的图形布局时,它会在活动底部正确显示imageview。但是,当我在设备上启动应用程序时,它根本不会显示Imageview。


你在 Graphical Layout 中设置的目标屏幕和分辨率是否与您实际设备的相同? - user2652394
是的,我已经尝试了每个分辨率和目标屏幕,它们都在图形布局中显示ImageView。不过我只有一个物理设备进行实际测试,可能是设备相关的问题? - Tim Kranen
如果图片过大,logcat会显示如下信息:“Bitmap too large to be uploaded into a texture (2496x4437, max=4096x4096)”。 参见此答案 - Josselin
12个回答

105

我遇到了同样的问题,只有在Android Studio 2.2的Design选项卡中才显示。

我所做的是将由Drag/Drop ImageView自动分配的键(app:srcCompat="@drawable/logo")从Text选项卡中更改为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" />

1
请参考以下链接:https://dev59.com/sVkR5IYBdhLWcg3w7hbE相反,您可以轻松地添加对app:srcCompat的支持。 - Jayz7522
2
有没有办法让AS默认停止这样做? - eric
3
在Android Studio 3.4中,我仍然遇到了同样的问题。 - Sunchezz

30
对我来说,问题在于我使用的是

tools:src=...

而不是

android:src=...

尝试使用已存在的模板图像时,它被自动生成。


是的,它可以在 Android Studio 2022 年 4 月版“大黄蜂”中工作。 - reza rahmad

24

好的,我已经尝试更改图像的分辨率(将其减半使其为1000x130),这些操作解决了问题。我认为 Android 无法直接渲染大型图像?我不知道,如果您对此主题了解更多,请不要犹豫回复!不管怎样,缩小图像可以解决问题。


1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Noah
对我也起作用了。我以前也见过这种情况,我总是忘记这是个问题。这确实需要一个错误消息。 - Wayneio

17

您可以使用:

android:background="@drawable/home_bar"

改为:

android:src="@drawable/home_bar"

12

我遇到了同样的问题,并通过以下方法解决:

我的问题是可绘制归档文件的方向写在了第二个 scrCompact 框中。

我将其复制粘贴到上方的框中,问题得以解决。

图片描述


6

如果图片过大,请在res中使用drawable-nodpi文件夹。


2

以上方法都不起作用,因为这是一张非常大的图片,找到了以下解决方案: 在你的清单文件中

Original Answer翻译成:"最初的回答"

<application
        //this solve it for me.
        android:hardwareAccelerated="false"
        // Add this if the previuos line didn't solve tge problem
        android:largeHeap="true"
        android:theme="@style/AppTheme">

最初的回答

帮我解决一下。

希望能对某些人有所帮助。


1
我有一个问题,使用三星手机无法显示我的可绘制资源,但在其他手机上却能正常运行。图片大小没有超过限制或出现任何异常情况。为了解决这个问题,我把我的图片资源放到drawable子文件夹中,而不是放在主要的drawable文件夹里。例如,从res/drawable到res/drawable-mdpi对我有效。如果你有一张用于所有dpi的图片,请将其放入res/drawable-nodpi。这里有关于dpi文件夹的更多信息。

如果您有一张用于任何没有特定dpi的图片,请将其放入res/drawable-nodpi文件夹中。- 这对我很有效!谢谢! - Alexander Kiselev

0

将您的图像转换为矢量

如何直接将png转换为Android矢量可绘制对象?

有时根据您的项目配置...标准图像在imageview中不会显示,并且以上任何答案都无法解决这些情况。

但是,如果您将图像转换为Android矢量(xml),则它将简单地显示在所有配置或属性集类型(tools、background、src...)中。

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher_background"
    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"
    tools:ignore="MissingConstraints" />

在这个示例中,@drawable/ic_launcher_background 是一个矢量图

enter image description here


0

我有同样的问题,在布局编辑器中图像很好,但在启动应用程序时变得模糊。我的解决方案非常简单,将图像复制粘贴到项目中时选择drawable-xxhdpi作为目标目录,以使图像大小更小。


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