安卓系统上带有自定义颜色的圆角布局



我有一个xml,用于我的绘图的形状颜色

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/light_red"/>
<corners android:radius="10dp"/>
</shape>

但我想把这个drawable用作全局drawable,就像在使用它时圆角一样,但可以更改backgroundColor

但当我试图用程序更改backgroundColor时,它会覆盖我想要的颜色,但也会覆盖变平的圆角。

目前,如果我想使用不同颜色的圆角,我需要创建多个只更改android:color的XML文件。

要以编程方式更改形状中全局定义的颜色,请使用以下命令:

findViewById(R.id.your_xml_element).getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);

只是为了让其他人来这里,我用你给我的东西做了一些研究,这个setColorFilter从API 29开始就不推荐使用了。
我找到了不推荐使用的方法的解决方案(稍微长一点,但有效(:

findViewById(R.id.your_xml_element).getBackground().setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(Color.BLUE, BlendModeCompat.SRC_ATOP));

最新更新