android - 自定义按钮将在单击时更改文本颜色、背景颜色和可绘制对象

标签 android android-layout button

我在 /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/

相关文章:

android - 可绘制为 CardView 的背景

ImageView 中的 Android 中心位图

java - 机器人 |如何检查 iamgeButton 的状态是播放还是暂停

java - 我的代码中的 Jbutton 问题

java - 禁用/启用表单中提交的按钮

android - 像主页按钮一样覆盖电源按钮

android - 如何在收到推送通知时自动打开应用程序?

Android新的底部导航实现

android - 身份验证 android 消息传递应用程序

android - 显示安卓 :hint only in Extract UI mode