2012-05-16 189 views
5

現在問題開始於設置形狀的顏色。 我drawable創建一個矩形並將其設置爲ImageView這樣如何更改imageview中設置的形狀的顏色

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:layout_weight="0.15" 
     android:layout_marginRight="10dp" 
     android:gravity="center_vertical"> 
     <ImageView 
     android:id="@+id/iv_priority" 
     android:src="@drawable/case_priority" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

編輯

我case_priority.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="#009600" /> 
    <size android:width="30dp" 
     android:height="30dp" /> 
</shape> 

現在我需要改變這種形狀的顏色。其實這種顏色來自網絡服務,我需要改變它。 所以我的問題是:我們如何以編程方式更改此形狀的顏色。並將其設置爲imageview。 我已經經歷了幾個例子在stackoverflow,但我不能夠改變它的形象view.Please幫助!!!! 在此先感謝。

編輯:

可能是我不是我的問題清楚,所以只是一個細化的問題。其實我有一個ImageView,我設置了一個實際上是可繪製的源。默認情況下,它的綠色,如上面顯示的我的代碼。現在Web服務返回這個圖像視圖的顏色,需要相應地進行更改,所以我無法在運行時從xml中更改它,所以我需要將其從java文件中更改。由於我正在使用形狀和圖像視圖,因此.setBackground()在這裏沒有多大幫助。那麼對此有什麼可能的解決方案。感謝您的回答,併爲您帶來不便。

+0

閱讀我的答案! – techiServices

+0

是的,我知道我只需要按照你的方式走,但不知道如何進一步 – Android

回答

10

Thanx所有的答案。它幫助我得到答案。

在我的佈局,我改變了android:src="" to android:background="@drawable/case_priority" 在我的java文件I N =包含此代碼: - >

 Resources res = getResources(); 
     final Drawable drawable = res.getDrawable(R.drawable.case_priority); 
     drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP); 
     ImageView img = (ImageView)findViewById(R.id.iv_priority); 
     img.setBackgroundDrawable(drawable); 

就是這樣。希望它會有人。

+0

如果將形狀分配給「ImageView」的「src」屬性,還有一種更簡單的方法。看到我的答案。 –

+0

@黑魔鬼,完美的解決方案。它工作正常。 –

+0

這是一個簡單而有用的解決方案,謝謝你。 –

3

它添加到圖像視圖

android:background="#152" // or some other color code 

編輯1: 用代碼來做到這一點做這個

ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987 

編輯2:

ImageView Imgs = (ImageView) findViewById(R.id.iv_priority); 

Imgs.setBackgroundColor(Color.parseColor("ColorCode")); 
+1

謝謝你的回覆先生,但我有顏色,並已設置它的形狀。但我需要通過Java文件以編程方式進行更改。 – Android

+0

通過更新 – Trikaldarshi

+0

是的,先生,我做到了,但現在我的圖像視圖丟失。 – Android

2

IimageView.setBackgroundColor(「#152」);

-1

所有解決方案都建議使用ImageView的背景。我認爲這不是理想的解決方案。該問題已經反映了一種直觀的方法:將形狀應用於src屬性。爲了然後以編程方式改變形狀的顏色,你會怎麼做:

GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable(); 
drawable.setColor(Color.RED); 

鑑於形狀被指定爲在原題:

<ImageView 
    android:id="@+id/iv_priority" 
    android:src="@drawable/case_priority" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

這也帶來了,你可以設置的ImageView的優勢背景與其內容分開。

+0

這種方式不起作用。給null null – Sahil

+1

這個答案幫助了我,所以它通常工作。 –

0

由於Lars Blumberg's answer我也不想改變的背景下,所以我採用下列代碼,以我的形象,因爲我沒有一個GradientDrawable:

Drawable drawable = imageView.getDrawable(); 
drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY); 
相關問題