setBackgroundTintList用于以编程方式使用十六进制值/ ColorDrawable的按钮

Par*_*dox 3 android android-button colordrawable

我试图以编程方式设置按钮的背景色,而不是像此处那样设置为颜色资源,而是设置为十六进制值。目前,我已经将十六进制值转换为ColorDrawable,但不知道如何使用该.setBackgroundTintList()方法通过按钮的方法设置背景色。请注意,这是在Fragment中完成的,上下文存储在名为的全局变量中mContext

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
Run Code Online (Sandbox Code Playgroud)

Bis*_*Abd 5

在API +21上

btn.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#buttonColor")));
Run Code Online (Sandbox Code Playgroud)

或兼容

         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
Run Code Online (Sandbox Code Playgroud)