android 使用十六进制值以编程方式为按钮设置BackgroundTintList/ ColorDrawable

2eafrhcq  于 2023-03-06  发布在  Android
关注(0)|答案(3)|浏览(109)

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

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

kg7wmglp1#

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
gpnt7bae

gpnt7bae2#

使用Compat的静态函数:

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

yeotifhr3#

有两种方式:
1)从color.xml中获取颜色名称

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

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

.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#color")));

相关问题