Android Button按钮点击背景和文字变化操作

作者:yuxuehandong 时间:2023-10-27 22:27:22 

Android 原生的按钮点击状态是有变化的,但是如果是自己加了一个.png格式的图片为背景色,按钮点击就不会有任何效果,为了达到点击按钮有一闪的效果,我们就需要准备两张图进行切换, 而且文字也要变色,老规矩废话不多说直接上代码:

按钮背景图片放在 drawable/background_button.xml


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

<item android:drawable="@drawable/bg_press" android:state_pressed="true"/>
<item android:drawable="@drawable/bg_normal" android:state_enabled="true"/>
<item android:drawable="@drawable/bg_normal"/>
</selector>

准备两张图片一张为bg_press.png, 一张为 bg_normal.png。

在需要变化的按钮中设置:


  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_centerVertical="true"
   android:layout_marginRight="50dp"
   android:focusable="false"
   android:gravity="center"
   android:textSize="24px"
   android:text="@string/str_tethering_modify"
   android:background="@drawable/background_button" />

这有背景色变化就解决完了,下面到按钮上的文字了,现在点击按钮按钮上的文字是没有变化的,为了达到按钮文字颜色的变化我们再新建一个xml文件。

按钮颜色变化 drawable/button_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="#975508"/>
<item android:state_focused="false" android:state_pressed="false" android:color="#E5960E"/>
<item android:state_focused="true" android:color="#975508"/>
<item android:state_focused="false" android:color="#E5960E"/>

</selector>

加入到我们的按钮textColor中


  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_centerVertical="true"
   android:layout_marginRight="50dp"
   android:focusable="false"
   android:gravity="center"
   android:textSize="24px"
   android:textColor="@drawable/button_color"
   android:text="@string/str_tethering_modify"
   android:background="@drawable/background_button" />

这样直接使用背景和文字就都有点击效果啦,但是如果有这样一个需求,在某些条件下需要再设置按钮文字的颜 * utton.setTextColor(color),这样设置完后,发现我们按钮上文字点击又没有变化了,我之前试着直接 button.setTextColor(R.drawable.button_color);发现这样是没有任何用处的。这样就需要使用 ColorStateList 来解决,顾名思义,就是定义颜色的状态列表,通过监听按钮不同状态来设置不同的颜色,

老规矩,废话不多说了,直接贴代码:


/**
 * 按钮点击颜色变化
 */
private ColorStateList colorStateList;
colorStateList = (ColorStateList)getResources().getColorStateList(R.drawable.button_color);
if(xxx){
 button.setTextColor(Color.White);
}else{
 button.setTextColor(colorStateList);
}

这样就完美解决了按钮点击状态的变化啦。

补充知识:android studio设置按钮和背景融为一体也就是按钮去除阴影


<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />

来源:https://blog.csdn.net/yuxuehandong/article/details/51424734

标签:Android,Button,背景,文字
0
投稿

猜你喜欢

  • Android消息机制Handler用法总结

    2022-08-10 23:58:56
  • 浅谈Spring Boot 整合ActiveMQ的过程

    2022-03-22 05:20:27
  • Unity实现攻击范围检测并绘制检测区域

    2023-09-18 21:59:10
  • Java如何实现自定义异常类

    2023-06-21 23:44:01
  • JavaWeb中获取表单数据及乱码问题的解决方法

    2021-11-21 11:03:53
  • springboot redis分布式锁代码实例

    2023-12-05 21:40:10
  • C# 通过反射初探ORM框架的实现原理(详解)

    2023-08-30 20:05:30
  • Unity实现俄罗斯方块(二)

    2022-01-15 06:57:56
  • C++实现哈夫曼树算法

    2023-05-21 01:03:46
  • C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter

    2022-03-07 23:01:28
  • java控制台输入示例分享

    2023-11-28 02:28:05
  • IDEA简单实现登录注册页面

    2023-08-06 19:10:37
  • Java用freemarker导出word实用示例

    2022-06-05 17:16:32
  • Spring Cloud Sleuth整合zipkin过程解析

    2022-04-26 23:32:57
  • 教你轻松制作java视频播放器

    2023-06-25 06:34:05
  • Android利用RenderScript实现毛玻璃模糊效果示例

    2021-05-26 02:32:07
  • Java集合TreeSet用法详解

    2023-11-10 22:53:34
  • 浅谈Java编程中的内存泄露情况

    2022-09-11 06:59:07
  • Android Kotlin使用SQLite案例详解

    2022-11-01 19:20:37
  • Java 延迟队列的常用的实现方式

    2022-06-30 13:57:00
  • asp之家 软件编程 m.aspxhome.com