我在 /drawable/
中有一个 Button
XML 文件,它改变了按钮的状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/img_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/img_normal"
android:state_focused="true" />
<item android:drawable="@drawable/img_normal"/>
</selector>
如果我只在单击事件时更改背景,这就可以了。
但是现在,我有一个带有左侧可绘制对象的按钮,单击时我必须更改左侧可绘制对象、文本颜色和按钮背景。
Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My button"
android:textColor="@android:color/white"
android:drawableLeft="@drawable/btn_leftDrawable"
android:background="@android:color/transparent"
/>
我可以在这个 XML 中执行此操作吗?如何执行?我不想通过在 setOnClickListener
方法中的 Java 代码中执行这些额外任务来制作意大利面条代码。
最佳答案
创建三个不同的xml选择器并添加到相应的属性中..
示例:
文字颜色:
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="@color/click"/>
<item android:color="@color/normal"/>
背景:
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="@color/buttonBackgroundClick"/>
<item android:color="@android:color/transparent"/>
将它们添加到您的按钮:
Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My button"
android:textColor="@drawable/textColor"
android:drawableLeft="@drawable/btn_leftDrawable"
android:background="@drawable/background"
/>
关于android - 自定义按钮将在单击时更改文本颜色、背景颜色和可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276525/