setBackgroundTintList for button programmatically with a hex value / ColorDrawable

问题描述 投票:0回答:3

我正在尝试以编程方式设置按钮的背景色调,而不是像here那样设置为颜色资源,而是设置为十六进制值。目前,我已将十六进制值转换为 ColorDrawable,但不知道如何使用它通过按钮的

.setBackgroundTintList()
方法设置背景色调。请注意,这是在片段中完成的,上下文存储在名为
mContext
.

的全局变量中
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
android android-button colordrawable
3个回答
15
投票

API +21

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

或兼容

         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

3
投票

使用 Compat 的静态函数:

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

0
投票

有两种方式:

1) 从 color.xml 中获取颜色名称

.setBackgroundTintList(ColorStateList.valueOf(ResourcesCompat.getColor(
                        getResources(), R.color.your_color, null)));

2) 使用十六进制颜色字符串

.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#color")));
© www.soinside.com 2019 - 2024. All rights reserved.