2011-09-01 54 views
7

我在Android上的圖像設置爲一個ImageView的控制相關的圖像(可繪製):獲取的ImageView的Android

iv.setImageResource(R.drawable.image1); 

我想此相關的繪製對象,看起來像:

Drawable myDrawable = iv.getImageResource(); //wrong 

的感謝!

+0

你能否詳細說明一下你在想什麼。 –

回答

28

你可以像

Drawable myDrawable = iv.getDrawable(); 

提拉你可以用繪製資源像

if(iv.getDrawable()==getResources().getDrawable(R.drawable.image1)){ 
    //do work here 
} 
+5

它沒有爲我工作。 – Manikandan

+2

它也沒有爲我工作..但它有複選標記。 – IcedDante

+0

你會得到什麼錯誤? –

5

首先定義Drawable。

Drawable myDrawable = getResources().getDrawable(R.drawable.image1); 
iv.setImageDrawable(myDrawable); 
5

使用Drawable drawable=imageview.getDrawable();

+0

謝謝!我如何將它與DrawableResource進行比較? (R.drawable.image1) – thenosic

+0

你不能(很容易)「比較」圖像! – Fattie

+0

@thenosic,你可以比較它。檢查我的答案。 –

7

不幸的是,沒有getImageResource()getDrawableId()。但是,我使用ImageView標籤創建了一個簡單的解決方法。

在的onCreate():

imageView0 = (ImageView) findViewById(R.id.imageView0); 
imageView1 = (ImageView) findViewById(R.id.imageView1); 
imageView2 = (ImageView) findViewById(R.id.imageView2); 

imageView0.setTag(R.drawable.apple); 
imageView1.setTag(R.drawable.banana); 
imageView2.setTag(R.drawable.cereal); 

然後,如果你願意,你可以創建一個簡單的函數來獲取繪製ID:

private int getImageResource(ImageView iv) { 
    return (Integer) iv.getTag(); 
} 

我希望這可以幫助你,它肯定發我的工作更輕鬆。

+0

我正在尋找解決方案,其中圖像視圖上的圖像資源發生變化。我想知道當前資源的行爲基於它。此解決方案將不起作用,因爲我們必須在設計時使用資源ID初始化標籤屬性。對?? – hasan83

+0

您可以隨時添加或更改標籤。另外,取決於你想要做什麼,一個[ViewFlipper](http://developer.android.com/reference/android/widget/ViewFlipper.html)可能是一個選擇考慮。 – Anonsage

+0

我正在使用外部庫下載圖像,並更改了imageview上的圖像。我不想修改圖書館。所以我實施了另一種解決方謝謝 – hasan83

0

比較呢?這是一個簡單的方法,如果你可以使用視圖的id成員變量:剛剛店R.drawable id使用v.setId()。然後用v.getId()返回。