私は実際にアプリで色付きのアイコンを使用しようとしています。 here から公式のマテリアルデザインアイコンパックをダウンロードしました。このパックのすべてのアイコンは、白、グレー、または黒になりました。しかし、アイコンの色を変えたいです。 この画像 の左側のアイコンのようなもの。電話の電話とメールのアイコンは青です。どうすればこれを達成できますか?
アイコンの色を変更するには
<ImageButton
Android:layout_width="your value"
Android:layout_height="your value"
/* and so on ... */
Android:tint="YourColor"
/>
注:色合いは、代替色ではなく、画像の上にペイントされます。 #80ff0000
黒の画像では、背景の50%の赤ではなく、黒の50%の赤が得られます。つまりこれはiOSテンプレート画像と同等ではありません。
Appcompatサポートライブラリ内でTintImageView
を使用し、_Android:backgroundTint
_を呼び出すだけで画像ビューを着色/着色して、画像ビューを1つの色に着色することができます。
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を緑色に着色します。つまり、緑色に見えるimageviewの各ピクセルを着色します。
私は同じことを探していましたが、コードで動的に変更することでした。これが同じものを探している人に役立つことを願っています。
アイコンのImageViewを作成し、そのビューでsetColorFilterを使用します。
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));
<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 = "#ca0f0f"を変更して色を変更します
XMLでマテリアルアイコンの色を変更する方法
<ImageButton
Android:layout_width="YourValue"
Android:layout_height="YourValue"
...
Android:tint="YourColor" // this line do the magic
/>
このスレッドにはすでに多くの選択肢があります。おそらく、便利だと思う人のためにもう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));
上記は私のためにトリックをしましたが、私のユースケースでは、Android:tint
はい、それは可能であり、このライブラリを使用すると簡単です: https://github.com/jrvansuita/IconHandler
これを簡単に呼び出すことができます:
Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
次のコードを使用して、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"
/>