如何在Android中将颜色传递给自定义xml项?

如何在Android中将颜色传递给自定义xml项?,android,xml,android-layout,kotlin,android-custom-view,Android,Xml,Android Layout,Kotlin,Android Custom View,我为按钮的虚线边框定制了一个形状。使用硬编码颜色时,一切正常,但我需要从外部传递颜色。我怎么做 这是我的xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <soli

我为
按钮的虚线边框
定制了一个形状。使用
硬编码颜色
时,一切正常,但我需要
从外部传递颜色
。我怎么做

这是我的xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid/>
        <corners android:radius="16dip" />
        <stroke
            android:width="1dp"
            android:color="@color/blue"
            android:dashWidth="3dp"
            android:dashGap="3dp"
            />
    </shape>
</item>
</selector>

我需要将边框颜色从硬编码更改为动态

您需要从视图中获取background(),然后

DrawableCompat.setTint(color, DrawableCompat.wrap(view.bacground())

我通过使用属性Stroke-Color=“your Color”的另一个可绘制资源文件实现了同样的效果 然后将后台可绘制文件设置为新的可绘制文件

 yourview.setBackgroundResource(R.drawable.another);
这是因为该方法:

DrawableCompat.setTint(as.getBackground(),Color.BLUE);
甚至将实心填充颜色设置为蓝色(本例中为蓝色),这是您不想要的。
希望能有帮助`

你说的动态是什么意思?你能澄清一下吗,你想在按下按钮时使用不同的皮肤吗?比如说,我想在不同的屏幕上使用不同的颜色。这会给按钮的整个背景涂上颜色。我只需要更改笔划的颜色,你能分享另一个可绘制的代码吗?当我试图创建只有颜色的笔划时,我松开了所有其他参数(宽度、形状、间隙)
DrawableCompat.setTint(as.getBackground(),Color.BLUE);