我在kotlin中编写了一个自定义TextView,它用作选择按钮。 意思是,在未选择状态下,它的背景是带有角的灰色背景,在未选择状态下,该背景会改变颜色。
(按钮中间有一个文字)
问题: 我需要显示全部这些按钮,对于每个按钮,所选状态的颜色可能会有所不同,并且按钮之间会发生变化。
因此,如果我有:Button1,Button2,Button3,那么对于它们中的每一个,当它们被选中时,背景颜色都是不同的。
我可以以某种方式控制可绘制xml使用的颜色吗?
button_background:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle" >
<solid android:color="@color/dynamicColor" /> --> how can I control this color?
<corners
android:bottomLeftRadius="20dp"
android:bottomRightRadius="20dp"
android:topLeftRadius="20dp"
android:topRightRadius="20dp" />
</shape>
答案 0 :(得分:1)
是的,您可以通过编程方式更改可绘制文件的Solid color
。如下所示。
val drawable = view.getBackground() as GradientDrawable // here view is your textview reference.
drawable.setColor(Color.GREEN) // set your color here
答案 1 :(得分:0)
在res / drawable /文件夹中创建一个BtnStateDrawable.xml
,然后设置不同的状态ShapeDrawable。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]
android:dither=["true" | "false"]
android:variablePadding=["true" | "false"] >
<item
android:drawable="@[package:]drawable/drawable_resource" . //here is your shapedrawable
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_hovered=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_activated=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>