Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setBackgroundTintList for button programmatically with a hex value / ColorDrawable

I'm trying to set the background tint of a button programmatically, not to a color resource as done here, but instead to a hex value. At the moment, I have converted a hex value into a ColorDrawable, but do not know how to use this to set the background tint with the .setBackgroundTintList() method of my button. Note that this is being done in a Fragment and the context is stored in a global variable called mContext.

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
like image 916
Paradox Avatar asked Feb 10 '18 03:02

Paradox


1 Answers

on API +21

btn.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#buttonColor")));

or Compat

         Drawable drawable = new ColorDrawable(Color.parseColor("color"));
         // Wrap the drawable so that future tinting calls work
         // on pre-v21 devices. Always use the returned drawable.
        drawable = DrawableCompat.wrap(drawable);


        DrawableCompat.setTint(drawable,Color.parseColor("colorTint"));
           //or tint list  
       //DrawableCompat.setTintList(drawable,ColorStateList.valueOf(Color.parseColor("#ffffff")));
        btn.setBackground(drawable); //apply drwable with tint to the ctn
like image 77
Bishoy Kamel Avatar answered Sep 18 '22 12:09

Bishoy Kamel