我创建了一个可绘制的资源,将其用作按钮。
圆形按钮.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/white">
<item android:id="@+id/circle_border">
<shape android:shape="oval">
<solid android:color="@color/deep_orange_700"/>
<stroke
android:width="16dp"
android:color="@color/login_register_tab_text" />
</shape>
</item>
</ripple>
此可绘制资源已分配给图像按钮
<ImageButton
android:id="@+id/button_dnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_button"
android:contentDescription="@string/description"
android:padding="50dp"
android:scaleX="0.7"
android:scaleY="0.7"
android:src="@drawable/src"
/>
所以我的问题是如何改变可绘制资产中标记的颜色,标记<solid android:color="@color/deep_orange_700"/>
和<stroke android:color="@color/login_register_tab_text" />
在Kotlin文件中不相互影响(动态)?
tldr:我尝试用一个自定义的可绘制资源创建一个图像按钮,并希望在按钮被按下时动态地改变颜色,但是我无法在可绘制文件上改变特定的颜色。
2条答案
按热度按时间mitkmikd1#
要更改可绘制资源中一系列标记中的标记的颜色,可以使用以下步骤:
在XML编辑器或文本编辑器中打开可绘制资源文件。
找到你想要改变颜色的标签。这个标签可以是一个形状,渐变或者其他类型的可绘制元素。
在标签中,查找定义颜色的属性,根据你使用的可绘制元素的类型,这个属性可以叫做“color”,“strokeColor”,或者类似的东西。
将此属性的值更改为要使用的颜色。可以使用十六进制颜色代码、RGB值或预定义的颜色名称来指定颜色。
保存可绘制资源文件并重新生成项目以应用更改。
下面是一个可绘制资源文件的示例,该文件定义了一个使用纯色填充的矩形:
矩形的颜色是用十六进制颜色代码指定的。2要改变矩形的颜色,你只需要修改android:color属性的值。
bjp0bcyl2#
这就是在运行时更改颜色的方法