web-dev-qa-db-ja.com

AndroidでImageViewをクリアするにはどうすればいいですか?

私は自分のディスプレイにImageViewsを再利用していますが、ある時点でそれを入れる値がありません。

それではどのようにAndroidでImageViewをクリアするのですか?

私はもう試した:

mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);

それらのどれもビューをクリアしていません、それはまだ前の画像を示しています。

242
Pentium10

私は dennis.sheppard という解決策でそれをやっていました:

viewToUse.setImageResource(0);

動作しますが、ドキュメント化されていないので、ビュー内で何か他のものに影響するかどうかはあまり明確ではありません( ImageViewコード を確認できます。 t).

私は最善の解決策だと思います:

viewToUse.setImageResource(Android.R.color.transparent);

私はこの解決策が大好きなので、状態を元に戻すのに難しいことは何もないし、それが何をしているのかも明らかだ。

484
Mario Lenci

私は基本的に画面から完全にImageViewsを削除する必要があるという同様の問題を抱えていました。ここでの答えのいくつかは私を正しい方向へ導きました、しかし結局setImageDrawable()を呼び出すことは私のために働きました:

imgView.setImageDrawable(null);

(コメントで述べたように、そのような用法は公式文書に文書化されています: ImageView#setImageDrawable 。)

105
Kon

私はこれが古いことを知っていますが、私はこれを達成することができました

viewToUse.setImageResource(0);

それがうまくいくようには思えませんが、私は気まぐれにそれを試してみました、そしてそれは完全にうまくいきました。

79
dennis.sheppard

別の画像が表示されていないときに、ImageViewをデフォルトの画像に設定するのが望ましいようです。これがContactsアプリケーションのやり方です。

if (photoId == 0) {
    viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
    // ... here is where they set an actual image ...
}
17
Daniel Lew

ImageViewでImageとDrawableCacheをクリアするためにこれを試しました

ImgView.setImageBitmap(null);
ImgView.destroyDrawingCache();

私はこれがあなたのために働くことを願っています!

12
nandha

これらの解決策のいずれも、すでに設定した画像(特にsetImageResource(0)またはsetImageResources(Android.R.color.transparent))をクリアしていない場合は、setBackgroundDrawable(...)などを使用して現在の画像が背景として設定されていないことを確認してください。

あなたのコードは前景の画像リソースをあなたが設定したその背景画像の前で透明な何かに設定するだけで、それでも表示されます。

9
Brad English

ちょっと私は私がこの答えに非常に遅れているのを知っている、しかし私はこれを共有しなければならないとちょうど思った

イメージをリセットするときに呼び出すメソッドは、uがイメージを設定しているときに呼び出したメソッドと同じである必要があります。

Uをリセットしたいときはimage source @ dennis.sheepard答えは元々uがsetImageResource()を使ってビットマップに画像を設定している場合にのみうまくいきます。

例えば、

私はsetImageBitmap()を使っていたのでsetImageResource(0)の設定はうまくいきませんでした、代わりにsetImageBitmap(null)を使いました。

5
Ajay

Drawableを定義することでこれを達成できました(blank_white_shape.xmlのようなもの):

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"       
       Android:shape="rectangle">
    <solid Android:color="@Android:color/white"/>
</shape>

それから私はちょうど私が呼び出す画像ビューをクリアしたいとき

 imageView.setImage(R.drawable.blank_white_shape);

これは私のために美しく働きます!

3
kwasi

kwasi が書いていて gol が編集しているので、白の代わりにtransparentを使うことができます。

ファイルdrawable/transparent.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <solid Android:color="@Android:color/transparent"/>
</shape>

アクティビティ、ビューなどの中

view.setImageResource(R.drawable.transparent);
2
KitKat

ListViewアイテムの画像では、「画像なし」の場合のリストアダプタでImageView.setVisibility(View.INVISIBLE)またはImageView.setImageBitmap(null)を設定できます。

1
Arvis

同じ問題に直面していた私は、ビューの背景色をレイアウトの背景色に変更しました。

 edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));

//それから画像を設定する

edit_countflag.setImageResource(R.drawable.flag_id);
0

ImageViewで画像を削除するには:

title_image.setImageResource(-1);

わたしにはできる

0
Tobore Igbe

サポートライブラリを使用すると、すべてのデバイスでsetImageResource(0)をサポートするAppCompatImageViewの代わりにImageViewが得られるので、setImageDrawable(null)およびsetImageBitmap(null)を使用するのと同じ方法でそれを使用して問題ないはずです。

そうでなければ、それはいくつかのAndroidのバージョンから始めてうまくいくはずです。 Androidのコードによると私のテストによると、私はAndroid API 22(5.1)のsetImageResource(0)を使うのが安全であるべきだと思います。 API 22とAndroid 21のAndroidコードを見ることができます ここ

0

これは私のために働きます。

emoji.setBackground(null);

これは実行時にクラッシュします。

viewToUse.setImageResource(Android.R.color.transparent);  
0
sbchitra