我实际上是想在我的应用中使用彩色图标。我已经从here下载了官方资料设计图标包。现在这个包中的所有图标都是白色,灰色或黑色。但我希望图标颜色不同。 类似于this image左侧的图标。电话和邮件图标是蓝色的。我怎么能做到这一点?
答案 0 :(得分:52)
要更改图标颜色,请尝试
<ImageButton
android:layout_width="your value"
android:layout_height="your value"
/* and so on ... */
android:tint="YourColor"
/>
注意:色调颜色涂在图像的顶部,而不是替换颜色。因此,黑色图像上的色调#80ff0000
会在背景上为黑色提供50%的红色,而不是50%的红色。即这不等同于iOS模板图像。
答案 1 :(得分:32)
您可以使用appcompat支持库中的TintImageView
,然后通过调用android:backgroundTint
将图像视图着色为一种颜色,对图像视图进行着色/着色。
<强> XML 强>
<TintImageView
android:layout_width=""
android:layout_height=""
android:src=""
android:backgroundTint="@color/green"/>
或
<ImageView
android:tint="the_color_you_want"/>
<强>编程方式强>
ImageView yourImageView = findViewById(...)
yourImageView.setColorFilter(Context.getColor(your_color_here))
因此,上面的xml会将imageView着色为绿色,这意味着它会将图像视图的每个像素着色为绿色。
答案 2 :(得分:11)
我一直在寻找相同的东西,但要在代码中动态更改它。我希望这有助于某人寻找同样的事情。
为图标创建一个ImageView,并在该视图上使用setColorFilter。
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));
答案 3 :(得分:4)
<vector android:height="48dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ca0f0f" android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2H5c-1.11,0 -2,0.9 -2,2zm12,4c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zm-9,8c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1H6v-1z"/>
</vector>
你通过改变android来改变颜色:fillColor =&#34;#ca0f0f&#34;
答案 4 :(得分:1)
此线程中已有许多替代方案。也许我可以为那些方便的人添加一个:
您也可以使用Drawable类,代码如下
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.ic_play_circle_filled);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorPrimary));
虽然以上为我做了诀窍,但对于我的使用案例,Suggicient是使用android:tint
答案 5 :(得分:1)
如何更改XML中的材质图标颜色
<ImageButton
android:layout_width="YourValue"
android:layout_height="YourValue"
...
android:tint="YourColor" // this line do the magic
/>
答案 6 :(得分:0)
是的,这是可能的,并且使用此库很简单: https://github.com/jrvansuita/IconHandler
您可以轻松地称之为:
Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
答案 7 :(得分:0)
使用以下代码从xml修改图标的颜色
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
android:foregroundTintMode="src_over"
android:tint="Your colour"
...
app:srcCompat="@android:drawable/ic_menu_slideshow"
/>
答案 8 :(得分:-1)
添加到Murali所说的内容,制作具有不同填充颜色的多个drawable。
然后在需要时添加到您的代码中:
imageView.setImageResource(R.drawable.drawable_with_different_color)
不:imageView.setBackgroundResource()
答案 9 :(得分:-3)
由于图标文件是.png格式,您应该使用您已创建图标的工具更改颜色。并使用Image Asset将其添加到项目中。