ImageView
ディスプレイにsを再利用していますが、ある時点でそれを配置する値がありません。
ではImageView
、Androidでをクリアする方法は?
私はもう試した:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
それらのどれもビューをクリアしていません、それはまだ前の画像を示しています。
ImageView
ディスプレイにsを再利用していますが、ある時点でそれを配置する値がありません。
ではImageView
、Androidでをクリアする方法は?
私はもう試した:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
それらのどれもビューをクリアしていません、それはまだ前の画像を示しています。
回答:
以前はdennis.sheppardソリューションでそれをしていました:
viewToUse.setImageResource(0);
それは機能しますが、文書化されていないため、ビューの他の何かに影響を与えるかどうかは明確ではありません(必要に応じてImageViewコードを確認できます)。
私は最良の解決策は次のとおりだと思います:
viewToUse.setImageResource(android.R.color.transparent);
私がこのソリューションを気に入っているのは、状態を元に戻すのに難しいことは何もないことと、それが何をしているかがはっきりしていることです。
viewToUse.setImageResource(0);
動作しませんが、動作しviewToUse.setImageResource(android.R.color.transparent);
ました。
同様の問題があり、画面からImageViewsを完全に削除する必要がありました。ここでの回答のいくつかは正しい方向に導いてくれましたが、最終的にsetImageDrawable()を呼び出すとうまくいきました:
imgView.setImageDrawable(null);
(コメントで述べたように、そのような使用法は公式のドキュメントで説明されています:ImageView#setImageDrawable)
これは古いことを知っていますが、これで達成できました
viewToUse.setImageResource(0);
うまくいくようには見えませんが、気まぐれで試してみたところ、完全に機能しました。
別の画像が表示されていないときにImageViewに設定するデフォルトの画像が必要なようです。これは、連絡先アプリケーションが行う方法です。
if (photoId == 0) {
viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
// ... here is where they set an actual image ...
}
これらの解決策のいずれも、すでに設定した画像(特にsetImageResource(0)
またはsetImageResources(android.R.color.transparent)
)をクリアしていない場合は、現在の画像がを使用して背景として設定されていないことを確認してくださいsetBackgroundDrawable(...)
。
コードは、前景の画像リソースを、設定した背景画像の前で透明なものに設定するだけで、引き続き表示されます。
ちょっと私はこの答えに非常に遅れていることを知っていますが、これを共有する必要があると思っただけで、
uがイメージをリセットしたときに呼び出すメソッドは、uがイメージを設定しているときに呼び出したメソッドと同じでなければなりません。
あなたがイメージソースをリセットしたいとき@ dennis.sheepard回答は、uが元々ビットマップで画像を設定している場合にのみに機能します。setImageResource()
例えば、
私は使用setImageBitmap()
していたため、設定が機能しませんでしたがsetImageResource(0)
、代わりにを使用しましたsetImageBitmap(null)
。
ドローアブル(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);
これは私にとって美しく機能します!
以下のようkwasiが書いたとgolu編集した、あなたの代わりに白、透明使用することができます。
ファイル 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);
サポートライブラリを使用すると、すべてのデバイスでサポートされるのAppCompatImageView
代わりに取得されます。そのため、やと同じ方法で使用することで問題はありません。ImageView
setImageResource(0)
setImageDrawable(null)
setImageBitmap(null)
それ以外の場合は、一部のAndroidバージョンから問題なく動作するはずです。Androidのコードと私のテストによると、setImageResource(0)
Android API 22(5.1)から使用しても安全だと思います。API 22とAPI 21のAndroidコードはこちらで確認できます
同じ問題に直面していましたが、ビューの背景色をレイアウトの背景色に変更しました。
edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));
//次に画像を設定します
edit_countflag.setImageResource(R.drawable.flag_id);
を使用してImageViewの画像も削除しようとしましたImageView.setImageRessource(0)
が、うまくいきませんでした。
幸いなことに、ログに次のメッセージが表示されました。
Caused by: java.lang.IllegalStateException: The specified child already has a parent.
You must call removeView() on the child's parent first.
つまりlayoutmanager
、レイアウトのインスタンスであるとしましょう。
RelativeLayout layoutManager = new RelativeLayout(this);
ImageView image = new ImageView(this);
// this line worked for me
layoutManager.removeView(image);
あなたがすべて設定しようとしていることを指摘できますか?
あなたは次のことをしてはいけませんか?
imageview.setImageDrawable(this.getResources().getDrawable(R.drawable.icon_image));
imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image));