如何在Android中为ImageView设置颜色

84

我想将图标设置到ImageView里,我从这个站点下载了图标:FlatIcon
现在我想给这些图标设置颜色,但是当我使用setBackground时只会为背景添加颜色而没有设置到图标上!
当我使用NavigationView时,我可以使用以下代码将颜色设置到图标上:app:itemIconTint="@color/colorAccent"

如何像itemIconTint一样将颜色设置到ImageView中的图标?感谢大家 <3


可能是重复的问题:如何在Android中以编程方式设置ImageView的色调? - Bö macht Blau
11个回答

202

如果您正在使用图标,这可能会有用:

android:tint="@color/colorAccent"
否则,您可以尝试修改该类:
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));

此线程中有更多信息:是否可以从Android的XML中更改Material Design图标颜色?


安卓4.0是否支持android:tint="@color/colorAccent"? - Mohammad Nouri
11
如果您看到getColor被标记为弃用,您需要执行以下操作:imageViewIcon.setColorFilter(ContextCompat.getColor(getContext(), R.color.blue)); - reku
1
在这种情况下,带有 alpha 通道的颜色将无法应用。例如,如果颜色是“#90000000”,则将应用黑色。 - Gary Chen
1
对我来说,“android:tint=@color/colorAccent”无法正常工作,因此我使用“app:tint=@color/colorAccent”。 - Pavlos Mavris

27

使用ImageView的tint属性。

 android:tint="@color/colorAccent"

Android 4.0支持android:tint="@color/colorAccent"吗? - Mohammad Nouri
@MohammadNouri 不支持在 Android 5.0(API 21)之前使用颜色状态列表和 android:tint 属性中的资源引用。 - Louis CAD
1
实际上,ColorStateList 自 API v1 就已经存在了:https://developer.android.com/reference/android/content/res/ColorStateList.html - FractalBob

13
 DrawableCompat.setTint(imageView.getDrawable(), ContextCompat.getColor(getApplicationContext(), R.color.white));

9

最新的Lint警告使用android:tint,建议使用app:tint,但是在与app:tintMode一起使用之前,tint不可见。因此,它看起来像这样:

app:tint="@color/yourcolor"
app:tintMode="add"

在我的情况下,app:tintMode="add" 没有任何作用。同时,app:tint="@color/yourcolor" 的效果也只能在运行时看到,即无法在设计师中看到其应用。 - Hashim Akhtar
1
如果“add”不起作用,您可以尝试其他模式 - 6rchid

8

使用

imageView.setColorFilter(getResources().getColor(R.color.color_white)); 

4

只需在您的图像视图中添加此行。

在XML文件中:

 android:tint="@color/color_name"

           or


app:tint="@color/color_name"

在Java中的文件操作:
imageViewIconName.setColorFilter(getContext().getResources().getColor(R.color.color_name));

4
在Android XML中使用这个色调ImageView。
 android:tint="@color/yourcolor"

3

您可以简单地使用android:tint,但由于某些版本存在问题。

使用AppCompatImageView,它将正常工作。

<AppCompatImageView 
        android:tint="@color/your_color" />

2
只需使用:ivMyImageView.setColorFilter(ActivityCompat.getColor(context, android.R.color.holo_green_light))

1
app:tint="@color___"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接