Android 用于在单击时更改按钮颜色并返回原始颜色的代码

Android code to change button color on click and back to original color

我想在点击按钮时更改按钮的颜色,当它即将移动到下一个按钮时 activity 它的颜色应该设置为原始颜色。简而言之,它应该通过更改颜色并返回相同颜色来突出显示单击的按钮。

使用 xml 中的按钮背景:

my_button_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
    <item android:drawable="@color/black"/> <!-- default -->
</selector>

在 res/values 文件夹中创建 colors.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <color name="black">#000</color>
     <color name="blue">#00f</color>
     <color name="red">#f00</color>
</resources>

drawable/background.xml

<?xml version="1.0" encoding="utf-8" ?>     
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
  <item android:state_pressed="true"   android:drawable= "#000000" />   
  <item android:drawable="#000000" />     
</selector>

color/color.xml

<?xml version="1.0" encoding="utf-8" ?>     
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
  <item android:state_pressed="true"   android:color= "#000000" />   
  <item android:color="#4b14b1" />     
</selector>
button.setBackgroundResource(R.drawable.background)
button.setTextColor(R.color.color)

您只需在布局文件中设置按钮选择器即可。

<Button
     android:id="@+id/button1"
     android:background="@drawable/selector_xml_name"
     android:layout_width="200dp"
     android:layout_height="126dp"
     android:text="Hello" />

完成。

编辑

以下是 drawable 目录中的 button_effect.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_normal"></item>

</selector>

在这里,你可以看到有 3 个可绘制对象,你只需要把这个 button_effect 样式放到你的按钮上,就像我上面写的那样。您只需要将 selector_xml_name 替换为 button_effect.

查看 This link。

mybutton.xml 将此文件放在可绘制文件夹中

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
<item android:state_pressed="true" >
 <shape android:shape="rectangle"  >
     <corners android:radius="3dip" />
     <stroke android:width="1dip" android:color="#5e7974" />
     <gradient android:angle="-90" android:startColor="#345953" android:endColor="#689a92"  />            
   </shape>
 </item>
<item android:state_focused="true">
 <shape android:shape="rectangle"  >
     <corners android:radius="3dip" />
     <stroke android:width="1dip" android:color="#5e7974" />
     <solid android:color="#58857e"/>       
 </shape>
</item>  
<item >
 <shape android:shape="rectangle"  >
     <corners android:radius="3dip" />
     <stroke android:width="1dip" android:color="#5e7974" />
     <gradient android:angle="-90" android:startColor="#8dbab3"  android:endColor="#58857e" />            
  </shape>
 </item>
 </selector>

根据需要更改颜色。

然后在您的 activity xml 屏幕中用以下代码代替 Button

<Button
 android:id="@+id/button1"
 android:background="@drawable/mybutton"
 android:layout_width="200dp"
 android:layout_height="126dp" />

您需要在drawable中创建一个选择器,有很多解决方案。 请遵循以下内容: 1.) 在可绘制文件夹中创建 xml 文件 button_selector :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_normal"></item>

</selector>

2.) 打开布局并在按钮上应用此 xml 选择器文件:

<Button
 android:id="@+id/btnClick"
 android:background="@drawable/button_selector"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />