如何在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);