Nexus 5中没有显示imageView(Android 6.0)

我在一个RelativeLayout中有一个ImageView:

<ImageView android:id="@+id/image" android:src="@drawable/image1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitCenter" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> 

它适用于许多设备(手机和平板电脑)和仿真器,但不适用于带有Android 6的Google Nexus 5。该应用程序完美工作,但不显示ImageView背景。

(图像在drawable文件夹中,我用setImageResource更改图像)

Solutions Collecting From Web of "Nexus 5中没有显示imageView(Android 6.0)"

我也遇到了同样的问题,其中我的图像显示在Android 6.0的所有Android版本的其余部分。 我正在testing我的应用程序在Android 5.0和Android 6.0,该时间图像正确显示在Android 5.0中,但在Android 6.0图像不加载Imageview中。

我已经使用src和背景两个属性,但没有在android 6.0中的Imageview中获取图像。

然后,为了解决这个问题,我检查了我的logcat,并在logcat中得到了下面的string。

W / OpenGLRenderer:位图太大,无法上传到纹理(3240×5760,最大= 4096×4096)

我search了相关的这个string并得到了这个解决scheme,Android 6.0在UI线程中不给权限做重要的过程。 如果您的图像尺寸和分辨率较小,则可以使用src或background来加载它。 但是你的图像太重,那么Android 6.0在UI Thread中跳过这个过程。

但是,你可以通过使用下面的解决scheme解决这个问题。

解决scheme1

使用像Glide这样的第三方库来解决这个问题。 我用这个解决了它。

解决scheme2

res添加一个drawable-nodpi文件夹,将图像放在里面,并简单地在Imageview标签中使用src。

在这里输入图像说明

将图像移动到drawable-nodpi而不是drawable。

基本上如果你把图像放在可绘制的文件夹中,它将被视为drawable-mdpi,所以android将resize以适应xxhdpi,即nexus 5,并且由于位图变大,所以不会显示

图像有各种形状和大小。 在许多情况下,它们大于典型应用程序用户界面(UI)所需的大小。 例如,系统图库应用程序会显示使用Android设备的相机拍摄的照片,这些照片通常比设备的屏幕密度高得多。

鉴于您正在使用有限的内存,理想情况下,您只需要在内存中加载较低的分辨率版本。 较低的分辨率版本应该与显示它的UI组件的大小相匹配。 具有较高分辨率的图像不会提供任何可见的好处,但仍占用宝贵的内存,并由于额外的即时缩放而导致额外的性能开销。

显示任意图像,如图标。 ImageView类可以从各种来源(如资源或内容提供者)加载图像,负责从图像计算其测量值,以便可以在任何布局pipe理器中使用它,并提供各种显示选项,如缩放和着色。

  1. 删除android:adjustViewBounds="true"

  2. 使用小尺寸(分辨率)导向的图像

忠告

你可以使用public void setImageResource (int resId)

设置一个drawable作为这个ImageView的内容。

这会在UI线程上进行位图读取和解码,这可能会导致延迟打嗝。 如果这是一个问题,请考虑使用setImageDrawable(android.graphics.drawable.Drawable)或setImageBitmap(android.graphics.Bitmap)和BitmapFactory来代替。

  ImageView imageView = (ImageView) findViewById(R.id.image); imageView.setImageResource(R.drawable.image1); 

阅读Drawable-hdpi,Drawable-mdpi,Drawable-ldpi Android

要为不同的屏幕声明不同的布局和位图,您必须将这些替代资源放置在不同的目录/文件夹中。

这意味着,如果为xhdpi设备生成200×200图像,则应该为hdpi生成150×150的相同资源,为mdpi生成100×100的相同资源,为ldpi设备生成75×75的相同资源。

我能够在API23上加载一个imageView。

在这里输入图像说明

Nexus 5 6.0上的图像视图问题也有所不同。 这就像,当我到达页面(有自定义键盘)时图像即将到来,但如果我点击设备后退button,图像视图隐藏(隐藏自定义键盘)。

所以我做了什么,我从布局中删除了android:adjustViewBounds =“true ,对于我来说它的工作正常,如果你愿意的话,你也可以删除scaletype,不知道为什么它会发生,我正在等待正确的解决scheme。

当图像没有显示在某些Mi,Vaio设备上时,我遇到了类似的问题。 我缩小了这些特定设备的图像分辨率太高的问题。 因此,我使用Glide图像加载器库来降低图像的分辨率,同时使用以下代码在图像视图中打开图像(否则将原始大小保存在SD卡中)。

 Glide.with(context).load(imagePath).override(1280,720).fitCenter().into(imageView);