it-swarm.com.ru

Можно ли изменить цвет значка дизайна материала с xml в Android?

Я на самом деле пытаюсь использовать цветные значки в моем приложении. Я скачал официальный пакет иконок дизайна материалов из здесь . Теперь все значки в этом пакете либо белые, серые или черные. Но я хочу, чтобы значки были другого цвета ... Что-то вроде значков на левой стороне в это изображение . Значки телефона и почты синие. Как я могу сделать это?

28
Akshay

Для изменения цвета иконки попробуйте

<ImageButton
    Android:layout_width="your value"
    Android:layout_height="your value"
    /* and so on ... */

    Android:tint="YourColor"
    />

Примечание: оттенок окрашивается поверх изображения, а не замещающего цвета. Таким образом, оттенок #80ff0000 на черном изображении дает 50% красного на черном, а не 50% красного на фоне. То есть это не эквивалентно шаблонам изображений iOS.

48
Yogesh Borkhade

Вы можете использовать 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"/>

Программно

ImageView yourImageView = findViewById(...) yourImageView.setColorFilter(Context.getColor(your_color_here))


Таким образом, приведенный выше xml будет окрашивать imageView в зеленый цвет, это означает, что он будет окрашивать каждый пиксель изображения, который виден зеленым.

32
Rod_Algonquin

Я искал то же самое, но динамически менять его в коде. Я надеюсь, что это помогает кому-то искать то же самое.

Создайте ImageView для значка и используйте setColorFilter в этом представлении.

ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));
11
user3830188
<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"

4
Murali

Много альтернатив здесь уже в этой теме. Возможно, я могу добавить еще один для тех, кто считает это удобным:

Вы также можете использовать класс 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

1
Neil B

Да, это возможно и просто с помощью этой библиотеки: https://github.com/jrvansuita/IconHandler

Вы можете легко назвать это:

Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
0
Vansuita Jr.

Как изменить цвет иконки материала в XML

<ImageButton 
     Android:layout_width="YourValue"
     Android:layout_height="YourValue"
     ...
     Android:tint="YourColor" // this line do the magic
/>
0
Eri-Ngozi Okereafor

Используйте следующий код, чтобы изменить цвет вашего значка из 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" 
/>
0
Ibiam Obinna