android上带有自定义颜色的圆角布局

ttygqcqt  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(388)

我已经有了一个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>

但我想用这个画作为一个全球性的一个,像有圆角时,我用它,但能够改变 backgroundColor .
但当我试图改变 backgroundColor 在程序上,它覆盖了我想要的颜色,但它也覆盖了变平的圆角。
目前,如果我想要有不同颜色的圆角,我需要创建多个xml文件,其中只有 android:color 改变。

oprakyz7

oprakyz71#

只是为了以后来这里的其他人,我用你给我的东西做了一些研究,这个 setColorFilter 自api 29以来已弃用。
我找到了不推荐使用的方法的解决方案(稍微长一点,但有效):

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

628mspwn2#

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

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

相关问题