2010-05-18 43 views
196

我正在爲我的顯示器重複使用ImageView,但在某些時候我沒有價值。如何清除Android中的ImageView?

那麼如何清除Android中的ImageView

我已經試過:

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

他們都沒有被清除的觀點,它仍然顯示一個圖像。

+1

我建議,當你有沒有價值加載默認的圖像。 – Praveen 2010-05-18 16:53:38

+3

我沒有默認圖像,只是背景。我需要有背景。 – Pentium10 2010-05-18 16:54:58

+0

我認爲接受的答案需要在這裏改變。是否有任何規定在stackoverflow更改/移動被接受的答案實際答案(或更好的答案)從一個'解決方法'的答案?因爲很多用戶(如我)可以去接受而不是更好的回答 – 2015-12-09 17:56:01

回答

414

我用的dennis.sheppard解決方案做到這一點:

viewToUse.setImageResource(0); 

它的工作原理,但它沒有被記錄,因此它不能確定它是否會影響視圖中的其他內容(如果你喜歡,你可以檢查ImageView code)。

我認爲最好的辦法是:

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

我喜歡這個解決方案最值得有沒有什麼在恢復狀態棘手,它也清楚它在做什麼。

+3

我認爲使用帶有顏色標識符的setImageResource會給你在Android 2.2.1 – Blundell 2012-08-15 08:13:42

+0

這是可能的崩潰的問題。 我沒有設備來測試它。你測試過了嗎? 如果寫在這裏,我會編輯答案(和我的代碼:))。 我使用2.1-update1在xperia U20i上測試它,並按預期工作。對我來說 – 2012-09-19 17:39:56

+2

的作品viewToUse.setImageResource(android.R.color.transparent);代碼 – Javier 2013-01-09 17:20:33

17

這聽起來像你想要的是一個默認圖像來設置你的ImageView,當它不顯示不同的圖像。這是聯繫人應用程序是如何做的:

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

不,我不想要這個。我只想清除內容。用戶可以在之後選擇新的圖像。 – Pentium10 2010-05-18 17:08:27

+0

我不明白。您不希望顯示任何圖像,但是當沒有圖像顯示時,您沒有默認圖像向用戶顯示。你要麼*要*顯示用戶或不是。你甚至可以將背景設置爲圖像資源。 – 2010-05-18 17:11:39

+0

如果你對聯繫人很熟悉,有一個聯繫人卡片背景幀替換器,我在我的代碼中有。 ''這是一張簡單的灰色背景照片。 – Pentium10 2010-05-18 17:22:48

-3

嘗試mPhotoView.setAlpha(0),使圖像完全透明(255恢復)。

+7

這樣圖像資源仍然存在,不會被垃圾收集。它需要完全刪除gc來撿起來。 – 2012-06-15 13:31:19

77

我知道這是舊的,但我可以用

viewToUse.setImageResource(0); 

做到這一點似乎並不像它應該工作,但是我想它一時興起,它完美地工作。

+2

實際上,將其設置爲任何無效的圖像資源(-1,45等) – dvallejo 2011-03-01 18:01:02

+7

不,設置爲-1會給你android.content.res.Resources $ NotFoundException。 0似乎工作。 – NateS 2011-04-10 07:10:45

+28

這種情況下,當你滾動你的列表視圖。不知何故將其設置爲0的imageview將顯示錯誤的圖像(它會顯示來自另一個圖像視圖的圖像) 所以下面的分辨率可以做到這一點 viewToUse.setImageResource(android.R.color.transparent); – 2012-07-15 13:31:13

3

我能夠通過定義繪製(類似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); 

這對我來說很漂亮!

85

我有一個類似的問題,我需要基本上從屏幕上完全刪除ImageViews。一些問題的答案在這裏使我在正確的方向,但最終調用setImageDrawable()爲我工作:

imgView.setImageDrawable(null); 
+3

這是可行的至少在我的應用程序中可靠。 setImageResource(0)有時起作用,但不起作用。 – Hong 2013-04-03 12:50:32

+4

如果你已經使用setImageBitmap設置圖像,這是你想要的 – 2013-05-15 17:43:28

+0

這在我看來是最好的答案!它很乾淨,有效並且很短。不需要定義一個空白drawable並應用它或類似的東西。 – Cat 2015-03-10 18:15:47

-1

我可以指出你想要設置什麼嗎?

你應該不是在做以下事情?

imageview.setImageDrawable(this.getResources().getDrawable(R.drawable.icon_image)); 

imageview.setImageDrawable(getApplicationContext().getResources().getDrawable(R.drawable.icon_profile_image)); 
1

對於ListView項的圖像可以爲「無圖像」的情況下設置ImageView.setVisibility(View.INVISIBLE)ImageView.setImageBitmap(null)列表適配器。

5

嘿,我知道我是極晚於這個答案,只是想我必須共享此,

的方法,當u重置圖像必須是ü而ü被設置叫同樣的方法調用。

當U想重置圖像源@ dennis.sheepard答案工作正常,只是如果u使用setImageResource()

例如原本設置在該位圖圖像,

我用了setImageBitmap()和因此設置setImageResource(0)沒有工作,而是我用setImageBitmap(null)

+1

你是對的Ajay,我觀察到相同的。根據條件,我使用setImageBitmap()/ setImageResource()替代相同的圖像視圖。因此,我不得不使用setImageResource(0)/ setImageBitmap(null)替代清除imageview。謝謝! – 2014-03-20 11:16:05

9

我的ImageView

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

嘗試本作以清晰的圖像和DrawableCache我希望這對你的作品!

1

由於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); 
+1

這是Genius! – 2015-07-09 01:07:43

9

如果沒有這些解決方案正在清除您已設置的圖像(尤其是setImageResource(0)setImageResources(android.R.color.transparent),請使用setBackgroundDrawable(...)或類似的東西檢查以確保當前圖像未設置爲背景。

您的代碼只會將前景中的圖像資源設置爲在您設置的背景圖像前透明的東西,並且仍然會顯示。

0

要刪除的圖像ImageView的使用:

title_image.setImageResource(-1);

它爲我工作