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

时间:2018-02-10 03:49:49

标签: android android-button colordrawable

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

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));

3 个答案:

答案 0 :(得分:5)

API +21上

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

或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

答案 1 :(得分:0)

使用Compat的静态功能:

ViewCompat.setBackgroundTintList(btn, ColorStateList.valueOf(Color.parseColor("#FFFFFF")));

答案 2 :(得分:0)

如果您想用颜色更改文本视图的颜色, 从Api 21到29进行了测试

 ColorStateList colorStateList = ContextCompat.getColorStateList(context, R.color.yourColor);
  textView.setBackgroundTintList(colorStateList);