change drawable color programmatically android
//resource Drawable unwrappedDrawable = AppCompatResources.getDrawable(context, R.drawable.my_drawable); Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable); DrawableCompat.setTint(wrappedDrawable, Color.RED); //activity Drawable unwrappedDrawable = tvContinue.getBackground(); Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable); DrawableCompat.setTint(wrappedDrawable, (Color.parseColor(getPreferences().getString(Constant.SECOND_COLOR, Constant.SECONDARY_COLOR)))); //adapter Drawable unwrappedDrawable = holder.tvOff.getBackground(); Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable); DrawableCompat.setTint(wrappedDrawable, (Color.parseColor(((BaseActivity) activity).getPreferences().getString(Constant.SECOND_COLOR, Constant.SECONDARY_COLOR)))); //
Here is what the above code is Doing:
1. First, we get the drawable from the resource.
2. Then, we wrap the drawable in a DrawableCompat.
3. Finally, we set the tint of the wrapped drawable.