使用imageView.setImageBitmap方法将位图设置为ImageView的背景。

38

我有一个ImageView。我正在使用imageView.setImageBitmap将我的图像设置为ImageView的背景。但是它将我的图像设置为ImageView的源(即android:src),而不是将其设置为ImageView的背景(即android:background)。

使用imageView.setImageBitmap时,看起来就好像我使用了imageView.setImageResource而不是imageView.setBackgroundResource

如果我想使用imageView.setImageBitmap将我的图像设置为背景,该如何处理呢?我知道可以通过创建自定义ImageView来实现,但是否可以在不使用自定义ImageView的情况下实现?如果可以,请告诉我如何做到。

6个回答

115

我已经测试过并且完成了

我认为你正在获取位图

所以你需要将位图转换为BitmapDrawable

像这样

  BitmapDrawable ob = new BitmapDrawable(getResources(), bitmap)

然后只需使用以下函数设置位图

  imageView.setBackground(ob);

通过这种方式,您可以做到这一点。


13
@Sandeep,那不是真的。只是那里的构造函数被弃用了。但是有一种可用的构造函数,如下所示:BitmapDrawable ob = new BitmapDrawable(getResources(), bitmap) - matt
2
我收到了“调用需要API级别16(当前最小值为14)”的错误信息。 - Teo Inke
我遇到了同样的问题,我无法将其设置为背景。它填满了我的整个安卓屏幕,但并没有到达后台。我已经被困在这个问题上很多天了。有人可以检查一下我的帖子吗?http://stackoverflow.com/questions/29439490/upload-image-and-set-it-as-background-android/29441256?noredirect=1#comment47057907_29441256 - nothingness
setBackgroundDrawable() 已经过时,请使用 setBackground()。 - Real KEK

11

尝试使用以下代码将自己的位图设置为背景。

Bitmap bitmap = ...;
ImageView imageView = ...;
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setBackground(drawable);

5

试试这个...

使用位图创建可绘制对象,然后使用“setBackgroundDrawable(Drawable d)”方法将其设置为ImageView的背景。

Drawable d = new BitmapDrawable(getResources(),bitmap);

imageview.setBackgroundDrawable(d);

3
请使用以下代码来设置图像背景。
imageview.setBackground(getResources().getDrawable(R.drawable.uporder));

这里的uporder是你drawable文件夹中存在的图片资源。


getDrawable已经被弃用了。:( - Johnny Wu
1
他问关于位图(bitmap)的问题,而你回答了关于可绘制对象(Drawable)的内容。这并没有帮助到他。 - yshahak

3

我更喜欢使用这个,因为它没有被弃用,并且可以在较低版本的Android中正常运行。

ImageView imageView;
Bitmap bitmap;
Drawable drawable = new BitmapDrawable(getResources(),bitmap);
imageView.setImageDrawable(drawable);

1
使用BitmapDrawable参数调用setBackgroundDrawable。

3
setBackgroundDrawable现在已经被弃用了。 :( - Chintan Rathod
@ Hameno,这确实很重要。Android开发人员会提供其他更好的选项来替代已弃用的方法。 - karan

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