Я действительно пытаюсь использовать цветные значки в своем приложении. Я загрузил официальный пакет значков дизайна материалов из здесь. Теперь все значки в этом пакете либо белые, либо серые, либо черные. Но я хочу, чтобы значки были другого цвета. Что-то вроде значков с левой стороны в этом изображении. Значки телефона и почты - синий. Как я могу это сделать?
Можно ли изменить цвет значка дизайна материала из xml в Android?
Ответ 1
Для изменения цвета значка попробуйте
<ImageButton
android:layout_width="your value"
android:layout_height="your value"
/* and so on ... */
android:tint="YourColor"
/>
Примечание: цвет оттенка окрашивается поверх изображения, а не цвет замены. Таким образом, оттенок #80ff0000
на черном изображении дает вам 50% красного цвета на черном, а не 50% красного на фоне. То есть это не эквивалентно изображениям шаблонов iOS.
Ответ 2
Вы можете использовать TintImageView
в библиотеке поддержки appcompat, а затем затемнить/раскрасить изображение, просто назовите android:backgroundTint
, чтобы подкрасить изображение в один цвет.
Xml
<TintImageView
android:layout_width=""
android:layout_height=""
android:src=""
android:backgroundTint="@color/green"/>
или
<ImageView
android:tint="the_color_you_want"/>
Programatically
ImageView yourImageView = findViewById(...)
yourImageView.setColorFilter(Context.getColor(your_color_here))
Таким образом, приведенный выше xml отобразит цветное изображение imageView, что означает, что он будет раскрашивать каждый пиксель изображения, видимый зеленым.
Ответ 3
Я искал то же самое, но динамически менял код. Надеюсь, это поможет кому-то искать то же самое.
Создайте ImageView для значка и используйте setColorFilter в этом представлении.
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));
Ответ 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>
вы меняете цвет, меняя андроид: fillColor = "# ca0f0f"
Ответ 5
Много альтернатив здесь уже в этом потоке. Возможно, я могу добавить еще одного для тех, кто считает это удобным:
Вы также можете использовать класс 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));
Несмотря на то, что выше было сделано трюк для меня, но для моего использования caseicient было использовать android:tint
Ответ 6
Как изменить цвет иконки материала в XML
<ImageButton
android:layout_width="YourValue"
android:layout_height="YourValue"
...
android:tint="YourColor" // this line do the magic
/>
Ответ 7
Да, это возможно и просто с помощью этой библиотеки: https://github.com/jrvansuita/IconHandler
Вы можете легко называть это:
Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
Ответ 8
Используйте следующий код, чтобы изменить цвет вашего значка из 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"
/>
Ответ 9
Добавив к тому, что сказал Мурали, сделайте несколько рисунков с разными цветами заливки.
Затем, когда это необходимо, добавьте в свой код:
imageView.setImageResource(R.drawable.drawable_with_different_color)
НЕ: imageView.setBackgroundResource()
Ответ 10
Когда файл значка находится в формате .png, вы должны изменить цвет, используя инструмент, с которого вы создали значок. и добавьте его, используя ImageAsset в проект.
Ответ 11
Это файл .png. Там много редакторов изображений. Вам просто нужно заполнить детали