จะเปลี่ยนสีของ Drawable ใน Android ได้อย่างไร?


271

ฉันกำลังทำงานกับแอปพลิเคชัน Android และฉันมี drawable ที่ฉันโหลดขึ้นมาจากอิมเมจต้นฉบับ ในภาพนี้ฉันต้องการแปลงพิกเซลสีขาวทั้งหมดให้เป็นสีที่ต่างกันพูดสีฟ้าจากนั้นแคชวัตถุที่วาดได้ผลลัพธ์เพื่อให้ฉันสามารถใช้ในภายหลัง

ตัวอย่างเช่นสมมติว่าฉันมีไฟล์ PNG ขนาด 20x20 ที่มีวงกลมสีขาวอยู่ตรงกลางและทุกอย่างที่อยู่นอกวงกลมนั้นโปร่งใส อะไรคือวิธีที่ดีที่สุดในการเปลี่ยนวงกลมสีขาวสีฟ้าและแคชผลลัพธ์ คำตอบเปลี่ยนไปหรือไม่ถ้าฉันต้องการใช้อิมเมจต้นฉบับนั้นเพื่อสร้าง Drawables ใหม่หลายรายการ (เช่นสีน้ำเงินแดงเขียวเขียวส้ม ฯลฯ )

ฉันคาดเดาว่าฉันจะต้องการใช้ ColorMatrix แต่อย่างใด แต่ฉันก็ไม่แน่ใจ


2
ในที่สุดคุณได้ทำงานนี้ในบางวิธี? ฉันเห็นคำตอบหลายข้อด้านล่างซึ่งฉันลองมาหลายข้อ แต่ก็ไม่ได้ผลอะไร ขณะนี้ฉันมีสี่เหลี่ยมสีขาวซึ่งฉันต้องการให้สีแตกต่างกันทุกครั้งตามความต้องการเพื่อที่ฉันจะได้ไม่ต้องสร้างสินทรัพย์คงที่ กรุณาแนะนำเพราะฉันยังคงรอการแก้ปัญหาการทำงานสำหรับรูปร่างที่เรียบง่ายของฉันในสีขาวเต็ม
omkar.ghaisas

@ omkar.ghaisas ฉันสร้างห้องสมุดชื่อ SillyAndroid ที่มีคลาสระบายสีหลากหลายและทำการระบายสีทุกประเภทสำหรับ drawable และข้อความ คุณสามารถตรวจสอบได้ที่github.com/milosmns/silly-android ชั้นเรียนตั้งอยู่ที่/sillyandroid/src/main/java/me/angrybyte/sillyandroid/extras/Coloring.java
milosmns

คำตอบ:


221

ฉันคิดว่าคุณสามารถใช้งานDrawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )ได้จริง นี่จะตั้งค่าพิกเซลสีขาวเป็นสีแดง แต่ฉันไม่คิดว่ามันจะส่งผลกระทบต่อพิกเซลโปร่งใส

ดูDrawable # setColorFilter


9
สิ่งนี้จะทำงานได้ดีเมื่อ drawable เป็นสีเดียวดีกว่าเมื่อเป็นสีขาว
Mitul Nakum

67
หากสีมีการเปลี่ยนแปลงแบบไดนามิก (เช่นในอะแดปเตอร์) drawable จะต้องไม่แน่นอน ตัวอย่าง: Drawable.mutate().setColorFilter( 0xffff0000, Mode.MULTIPLY)ข้อมูลเพิ่มเติม: อยากรู้อยากเห็น -creature.org/2009/05/02/drawable-mutations
sabadow

1
ใช่มันเป็นสิ่งที่ดีเป็นพิเศษสำหรับการไฮไลต์ (สว่างขึ้นเข้มขึ้นหรือเพิ่มสีสันให้กับภาพสีเทา) ฉันใช้เคล็ดลับนี้เพื่อสลับปุ่มที่ "ไม่เลือก" เป็นสีเทา & "ตรวจสอบ" เป็นสีหนาจากจานสีของแอป โดยส่วนตัวฉันพบว่าง่ายกว่าช่องทำเครื่องหมายที่กำหนดเอง
thom_nic

2
นี่คือสิ่งที่ฉันกำลังมองหาถึงแม้ว่ามันน่ารำคาญอย่างมากที่เราไม่สามารถทำได้ใน XML ( ยกเว้นที่ 5.0+ ) การแต้มสีไม่สามารถใช้งานได้ใน AppCompat ดังนั้นเราจึงต้องติดสายsetColorFilterทุกครั้งที่ใช้ไอคอนแทนที่จะมีตัวเลือกที่มีโทนสีต่างกัน แต่ถึงกระนั้นก็เป็นมากวิธีการแก้ปัญหาที่ดีกว่าการแก้ไข PNGs โดยตรงและมีสินทรัพย์คงที่พิเศษ
Chris Cirefice

21
ทวีคูณจะไม่ทำงานหากไอคอนต้นทางของคุณมีสีเข้ม ในการวาดรูปร่างไอคอนต้นทางด้วยการใช้สีปลายทางSRC_IN: myImage.getDrawable().mutate().setColorFilter(getResources().getColor(R.color.icon_grey), PorterDuff.Mode.SRC_IN);
Distwo

152

ลองโค้ดนี้:

ImageView lineColorCode = (ImageView)convertView.findViewById(R.id.line_color_code);
int color = Color.parseColor("#AE6118"); //The color u want             
lineColorCode.setColorFilter(color);

106

ฉันรู้ว่าคำถามนี้ถูกถามก่อน Lollipop แต่ฉันต้องการเพิ่มวิธีที่ดีในการทำบน Android 5 + คุณสร้าง xml แบบวาดได้ที่อ้างอิงถึงต้นฉบับดั้งเดิมและตั้งค่าสีอ่อนเช่น:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_back"
    android:tint="@color/red_tint"/>

นี้เป็นส่วนหนึ่งของห้องสมุดสนับสนุนล่าสุดหรือไม่
S-K '

ไม่นั่นช่วยได้ด้วยเครื่องมือง่ายๆ
MinceMan

8
Tint อยู่ใน support-v4 ผ่าน DrawableCompat
Mark Renouf

1
เยี่ยมฉันจะตรวจสอบและอัปเดตสิ่งนี้ตามลำดับ
MinceMan

ปูนเปียกไม่รองรับ drawable ประเภทนี้
jackqack

62

การสนับสนุนใหม่ v4 นำโทนสีกลับไปที่ api 4

คุณสามารถทำได้เช่นนี้

public static Drawable setTint(Drawable d, int color) {
    Drawable wrappedDrawable = DrawableCompat.wrap(d);
    DrawableCompat.setTint(wrappedDrawable, color);
    return wrappedDrawable;
}

2
เริ่มต้นจากห้องสมุดสนับสนุน 22.
rnrneverdies

1
นี่เป็นวิธีการแก้ปัญหาที่ได้รับความนิยมการวาดแต้มสีได้เป็นพื้นที่สีเทาใน API ที่เก่ากว่านับตั้งแต่อมยิ้มถูกปล่อยออกมา เบรกนี้เป็นอุปสรรค! ผมไม่ทราบว่าเกี่ยวกับเรื่องนี้ - ขอบคุณ @Pei
RicardoSousaDev

2
ระวัง! คุณควรกลายพันธุ์ drawable ใหม่ที่ห่อแล้ว "#mutate ()" เพื่อหลีกเลี่ยงปัญหาที่เกี่ยวข้องกับสถานะ ดูstackoverflow.com/a/44593641/5555218
Ricard

62

ถ้าคุณมี drawable ที่เป็นสีทึบและคุณต้องการจะเปลี่ยนเป็นสีทึบ differnet, ColorMatrixColorFilterคุณสามารถใช้ ความโปร่งใสจะถูกรักษาไว้

int iColor = Color.parseColor(color);

int red   = (iColor & 0xFF0000) / 0xFFFF;
int green = (iColor & 0xFF00) / 0xFF;
int blue  = iColor & 0xFF;

float[] matrix = { 0, 0, 0, 0, red,
                   0, 0, 0, 0, green,
                   0, 0, 0, 0, blue,
                   0, 0, 0, 1, 0 };

ColorFilter colorFilter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(colorFilter);

3
หากคุณต้องการใช้ทรัพยากรสีมากกว่าสตริง (# ff0000 ฯลฯ ) คุณสามารถใช้เช่น int iColor = getResources (). getColor (R.color.primary)
Ben Clayton

ใช้งานได้ แต่ฉันมีช่องทำเครื่องหมายและฉันต้องการรักษาเห็บสีขาวไว้ตรงกลาง มีข้อเสนอแนะอะไรบ้าง?
Farooq Arshed

3
รหัสในความคิดเห็นของเบ็นเลิกใช้แล้ว int iColor = ContextCompat.getColor(context, R.color.primary);แต่คุณสามารถใช้
บ้าน geoengineering

คำตอบที่ยอดเยี่ยม !! ขอบคุณทุกคน!
Kaveesh Kanwal

@ ไมค์ฮิลล์ตกลงอธิบายว่าทำไมคุณใส่มากกว่า 20 สีคุณต้องใส่ยิ่งใหญ่กว่ายี่สิบสีในอาร์เรย์เพราะมิฉะนั้นจะเกิดปัญหากับ java.lang.ArrayIndexOutOfBoundsException
AlexPad

50

ฉันยังใช้ImageViewสำหรับไอคอน (ในListViewหรือหน้าจอการตั้งค่า) แต่ฉันคิดว่ามีวิธีที่ง่ายกว่ามากในการทำเช่นนั้น

ใช้tintเพื่อเปลี่ยนการซ้อนทับสีบนไอคอนที่คุณเลือก

ใน xml

android:tint="@color/accent"
android:src="@drawable/ic_event" 

ทำงานได้ดีตั้งแต่มันมาจาก AppCompat


3
ทำงานเหมือนจับใจ! เรียบง่ายและสมบูรณ์แบบ ต้องทำเครื่องหมายเป็นคำตอบที่ยอมรับแล้ว
Naga Mallesh Maddali

2
มีคำตอบที่ดีมากมายที่นี่ แต่สำหรับคำถามของ OP นี่คือทางออกที่ดีที่สุดและง่ายที่สุด
เซบาสเตียน Breit

สำหรับ api 22 ขึ้นไป
philip oghenerobo balogun

1
@philipoghenerobobalogun ฉันเห็นการทำงานนี้ใน api 19
Jemshit Iskenderov

41

คุณควรทำสิ่งนี้กับ API ทั้งหมด:

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);

วิธีนี้แก้ไขปัญหาในลักษณะที่ยอมรับได้ แต่เมื่อทำการกรองสีอาจเกิดขึ้น (เกิดขึ้นกับฉัน) ว่าสีที่ได้นั้นไม่เป็นไปตามที่คาดไว้ สีที่ถูกทำให้จางลง สิ่งที่ฉันทำคือ: `LightingColorFilter ใหม่ (Color.parseColor (" # FF000000 "), myFinalColor)`
Yoraco Gonzales

1
เน้นสิ่งที่ฉันคิดว่าผู้วิจารณ์คนก่อนพูดว่าวิธีนี้จะเปลี่ยนสีถ้าพารามิเตอร์ 2 ตัวใน LightingColorFilter แตกต่างกันเช่นColorFilter filter = new LightingColorFilter(Color.BLACK, Color.LTGRAY);จะเปลี่ยนสีดำเป็นสีเทาใน drawable
hBrent

1
ดูเหมือนว่าจะไม่ทำงานเมื่อใช้อัลฟาสำหรับสีอ่อน
ypresto

30

ฉันสามารถทำสิ่งนี้ได้ด้วยรหัสต่อไปนี้ซึ่งนำมาจากกิจกรรม (เลย์เอาต์นั้นง่ายมากเพียงบรรจุ ImageView และไม่ได้โพสต์ที่นี่)

private static final int[] FROM_COLOR = new int[]{49, 179, 110};
private static final int THRESHOLD = 3;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_colors);

    ImageView iv = (ImageView) findViewById(R.id.img);
    Drawable d = getResources().getDrawable(RES);
    iv.setImageDrawable(adjust(d));
}

private Drawable adjust(Drawable d)
{
    int to = Color.RED;

    //Need to copy to ensure that the bitmap is mutable.
    Bitmap src = ((BitmapDrawable) d).getBitmap();
    Bitmap bitmap = src.copy(Bitmap.Config.ARGB_8888, true);
    for(int x = 0;x < bitmap.getWidth();x++)
        for(int y = 0;y < bitmap.getHeight();y++)
            if(match(bitmap.getPixel(x, y))) 
                bitmap.setPixel(x, y, to);

    return new BitmapDrawable(bitmap);
}

private boolean match(int pixel)
{
    //There may be a better way to match, but I wanted to do a comparison ignoring
    //transparency, so I couldn't just do a direct integer compare.
    return Math.abs(Color.red(pixel) - FROM_COLOR[0]) < THRESHOLD &&
        Math.abs(Color.green(pixel) - FROM_COLOR[1]) < THRESHOLD &&
        Math.abs(Color.blue(pixel) - FROM_COLOR[2]) < THRESHOLD;
}

ฉันจะได้รับ Threshold หรือ FROM_COLOR จากที่ไหน
mikepenz

นั่นคือค่าคงที่ที่ฉันนิยามไว้ ฉันเพิ่งแก้ไขคำตอบเพื่อรวมไว้
Matt McMinn

ขอบคุณ;) พยายาม แต่มันไม่พอดีกับปัญหาที่ฉันมี ลอง setColorFilter และใช้งานได้ แต่มีปัญหากับการปรับขนาดภาพ. 9.png ดังนั้นหากคุณมีความคิดว่าทำไมโปรดตอบคำถามของฉัน stackoverflow.com/questions/5884481/…
mikepenz

1
ฟิลเตอร์สีง่ายกว่ามาก
afollestad

17

คุณสามารถแก้ปัญหาได้โดยใช้ห้องสมุดที่รองรับ Android :)

 // mutate to not share its state with any other drawable
 Drawable drawableWrap = DrawableCompat.wrap(drawable).mutate();
 DrawableCompat.setTint(drawableWrap, ContextCompat.getColor(getContext(), R.color.your_color))

1
@AmitabhaBis ทำไมคุณเปลี่ยนคำตอบของฉันผิดไปหมด? ทีละส่วน 1. getResources (). getDrawable () เลิกใช้แล้ว !! 2. ฉันใช้ไลบรารีการสนับสนุนเพราะฉันไม่ต้องการสนใจรุ่น Andorid Api 3. ฉันไม่ต้องการวาด Drawable ... ถ้าคุณต้องการแสดงวิธีอื่นให้เขียนคำตอบของคุณเอง
Ricard

1
@AmitabhaBiswas นอกจากนี้ยังมีการแบ่งปัน drawable ในหมู่ getDrawable ทั้งหมดจากทรัพยากรดังนั้นการmutate()โทรจะต้องสามารถเปลี่ยนโทนสีของ drawable ได้โดยไม่ต้องแก้ไขการเชื่อมโยง drawables ทั้งหมดที่มี ID ทรัพยากรนั้น
Ricard

1
นี่คือคำตอบที่ดีที่สุด! การตัด drawable ในมุมมองรูปภาพไม่สามารถแก้ปัญหาได้
Julius

15

ในกิจกรรมของคุณคุณสามารถกรองทรัพยากรภาพ PNG ของคุณด้วยสีเดียว:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myColorTint();
    setContentView(R.layout.activity_main);
}

private void myColorTint() {
    int tint = Color.parseColor("#0000FF"); // R.color.blue;
    PorterDuff.Mode mode = PorterDuff.Mode.SRC_ATOP;
    // add your drawable resources you wish to tint to the drawables array...
    int drawables[] = { R.drawable.ic_action_edit, R.drawable.ic_action_refresh };
    for (int id : drawables) {
        Drawable icon = getResources().getDrawable(id);
        icon.setColorFilter(tint,mode);
    }
}

ตอนนี้เมื่อคุณใช้ R.drawable. * ควรเป็นสีที่มีโทนสีที่ต้องการ หากคุณต้องการสีเพิ่มเติมจากนั้นคุณควรจะสามารถ. mutate () drawable



4

หากคุณมีชุด drawable เป็น ImageView คุณสามารถทำได้ด้วย 1 ซับ:

yourImageView.setColorFilter(context.getResources().getColor(R.color.YOUR_COLOR_HERE);

3

ลองดูโค้ดตัวอย่างนี้ " ColorMatrixSample.java "

/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.android.apis.graphics;

import com.example.android.apis.R;

import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;

public class ColorMatrixSample extends GraphicsActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this));
    }

    private static class SampleView extends View {
        private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        private ColorMatrix mCM = new ColorMatrix();
        private Bitmap mBitmap;
        private float mSaturation;
        private float mAngle;

        public SampleView(Context context) {
            super(context);

            mBitmap = BitmapFactory.decodeResource(context.getResources(),
                                                   R.drawable.balloons);
        }

        private static void setTranslate(ColorMatrix cm, float dr, float dg,
                                         float db, float da) {
            cm.set(new float[] {
                   2, 0, 0, 0, dr,
                   0, 2, 0, 0, dg,
                   0, 0, 2, 0, db,
                   0, 0, 0, 1, da });
        }

        private static void setContrast(ColorMatrix cm, float contrast) {
            float scale = contrast + 1.f;
               float translate = (-.5f * scale + .5f) * 255.f;
            cm.set(new float[] {
                   scale, 0, 0, 0, translate,
                   0, scale, 0, 0, translate,
                   0, 0, scale, 0, translate,
                   0, 0, 0, 1, 0 });
        }

        private static void setContrastTranslateOnly(ColorMatrix cm, float contrast) {
            float scale = contrast + 1.f;
               float translate = (-.5f * scale + .5f) * 255.f;
            cm.set(new float[] {
                   1, 0, 0, 0, translate,
                   0, 1, 0, 0, translate,
                   0, 0, 1, 0, translate,
                   0, 0, 0, 1, 0 });
        }

        private static void setContrastScaleOnly(ColorMatrix cm, float contrast) {
            float scale = contrast + 1.f;
               float translate = (-.5f * scale + .5f) * 255.f;
            cm.set(new float[] {
                   scale, 0, 0, 0, 0,
                   0, scale, 0, 0, 0,
                   0, 0, scale, 0, 0,
                   0, 0, 0, 1, 0 });
        }

        @Override protected void onDraw(Canvas canvas) {
            Paint paint = mPaint;
            float x = 20;
            float y = 20;

            canvas.drawColor(Color.WHITE);

            paint.setColorFilter(null);
            canvas.drawBitmap(mBitmap, x, y, paint);

            ColorMatrix cm = new ColorMatrix();

            mAngle += 2;
            if (mAngle > 180) {
                mAngle = 0;
            }

            //convert our animated angle [-180...180] to a contrast value of [-1..1]
            float contrast = mAngle / 180.f;

            setContrast(cm, contrast);
            paint.setColorFilter(new ColorMatrixColorFilter(cm));
            canvas.drawBitmap(mBitmap, x + mBitmap.getWidth() + 10, y, paint);

            setContrastScaleOnly(cm, contrast);
            paint.setColorFilter(new ColorMatrixColorFilter(cm));
            canvas.drawBitmap(mBitmap, x, y + mBitmap.getHeight() + 10, paint);

            setContrastTranslateOnly(cm, contrast);
            paint.setColorFilter(new ColorMatrixColorFilter(cm));
            canvas.drawBitmap(mBitmap, x, y + 2*(mBitmap.getHeight() + 10),
                              paint);

            invalidate();
        }
    }
}

API ที่เกี่ยวข้องมีให้ที่นี่ :


1
นี่แสดงให้เห็นถึงวิธีการใช้ ColorMatrix แต่ฉันไม่เห็นวิธีการใช้ ColorMatrix เพื่อให้ได้ผลลัพธ์ที่ฉันต้องการ
Matt McMinn

3

สิ่งนี้ใช้ได้กับทุกสิ่งที่มีพื้นหลัง:

มุมมองข้อความ, ปุ่ม ...

TextView text = (TextView) View.findViewById(R.id.MyText);
text.setBackgroundResource(Icon);    
text.getBackground().setColorFilter(getResources().getColor(Color), PorterDuff.Mode.SRC_ATOP);

3

ข้อมูลโค้ดนี้เหมาะกับฉัน:

PorterDuffColorFilter porterDuffColorFilter = new PorterDuffColorFilter(getResources().getColor(R.color.your_color),PorterDuff.Mode.MULTIPLY);

imgView.getDrawable().setColorFilter(porterDuffColorFilter);
imgView.setBackgroundColor(Color.TRANSPARENT)

2

มีวิธีแก้ปัญหามากมาย แต่ไม่มีใครแนะนำถ้าไฟล์color resource xmlมีสีอยู่แล้วเราสามารถเลือกได้โดยตรงจากที่นั่นดังนี้:

ImageView imageView = (ImageView) findViewById(R.id.imageview);
imageView.setColorFilter(getString(R.color.your_color));

1

ตัวอย่างสั้น ๆ เพื่อเปลี่ยนสี drawable ตามisWorkingฟิลด์

รูปร่าง xml ของฉัน:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@android:color/holo_blue_bright" />
    <corners android:radius="30dp" />
    <size
        android:height="15dp"
        android:width="15dp" />
</shape>

วิธีการของฉันที่จะเปลี่ยน:

private Drawable getColoredDrawable(int drawableResId, boolean isworking) {
    Drawable d = getResources().getDrawable(R.drawable.shape);
    ColorFilter filter = new LightingColorFilter(
            isworking ? Color.GREEN : Color.RED,
            isworking ? Color.GREEN : Color.RED);
    d.setColorFilter(filter);
    return d;
}

ตัวอย่างการใช้งาน:

text1.setCompoundDrawablesWithIntrinsicBounds(getColoredDrawable(R.drawable.shape, isworking()), null, null, null);

0
Int color = Color.GRAY; 
// or int color = Color.argb(123,255,0,5);
// or int color = 0xaaff000;

ใน XML /res/values/color.xml

<?xml version="1.0" encoding="utf-8">
<resources>
    <color name="colorRed">#ff0000</color>
</resoures> 

รหัส Java

int color = ContextCompat.getColor(context, R.color.colorRed);

GradientDrawable drawableBg = yourView.getBackground().mutate();
drawableBg.setColor(color);

0

สายเกินไป แต่ในกรณีที่มีคนต้องการมัน:

   fun setDrawableColor(drawable: Drawable, color: Int) :Drawable {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            drawable.colorFilter = BlendModeColorFilter(color, BlendMode.SRC_ATOP)
            return drawable
        } else {
            drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
            return drawable
        }
    }

0

มันใช้งานได้ง่าย ฉันใช้มันในรูปทรงสี่เหลี่ยมสีทึบง่าย ๆ ที่มีมุมโค้งมนและจำเป็นต้องเปลี่ยนสีนั้นด้วยเค้าโครงที่แตกต่างกัน

ลองสิ่งนี้

android:backgroundTint="#101010"

-1

มันง่ายมากเมื่อคุณใช้ห้องสมุดเพื่อทำสิ่งนั้นให้กับคุณ ลองสิ่งนี้ห้องสมุด

คุณสามารถโทรแบบนี้:

Icon.on(holderView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.