2012-05-16 154 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); 
相关问题