当前位置: 首页 > news >正文

Android开发中 Button 背景控制选择器

方式一:使用纯色背景(color

如果你只需要在不同状态下改变按钮的颜色,这是最简单的方法。

  1. res/color 目录下创建 XML 文件: 例如,创建一个名为 button_background_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:color="#FF5722" /><item android:state_enabled="false" android:color="#B0BEC5" /><item android:state_focused="true" android:color="#FF7043" /><item android:color="#2196F3" />
</selector>
  1. 在布局文件中使用: 直接将这个 XML 文件作为按钮的 backgroundTint 属性引用。
<Buttonandroid:id="@+id/my_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击我"android:textColor="@android:color/white"android:backgroundTint="@color/button_background_selector" />
方式二:使用带圆角的形状背景(shape

这种方式更为常用,因为它不仅能改变颜色,还能控制按钮的形状、圆角、边框等样式。

1 . res/drawable 目录下创建 XML 文件:

- 首先,为每种状态创建一个单独的 `shape` 文件。
  • 默认状态:button_default.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#2196F3" /><corners android:radius="8dp" /><padding android:left="16dp" android:top="8dp"android:right="16dp" android:bottom="8dp" />
</shape>
  • 按下状态:button_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#1976D2" /><corners android:radius="8dp" /><padding android:left="16dp" android:top="8dp"android:right="16dp" android:bottom="8dp" />
</shape>
  • 禁用状态:button_disabled.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#B0BEC5" /><corners android:radius="8dp" /><padding android:left="16dp" android:top="8dp"android:right="16dp" android:bottom="8dp" />
</shape>
  • 焦点状态
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#1E88E5" /><corners android:radius="8dp" /><stroke android:width="2dp" android:color="#FF5722" /><padding android:left="16dp" android:top="8dp"android:right="16dp" android:bottom="8dp" />
</shape>
  1. 创建 selector 文件来引用这些 shape 文件: 创建一个名为 button_background_selector.xml 的文件,放在 res/drawable 目录下。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@drawable/button_pressed" /><item android:state_enabled="false" android:drawable="@drawable/button_disabled" /><item android:state_focused="true" android:drawable="@drawable/button_focused" /><item android:drawable="@drawable/button_default" />
</selector>
  1. 在布局文件中使用: 直接将这个 selector 文件作为按钮的 background 属性引用。
<Buttonandroid:id="@+id/my_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击我"android:textColor="@android:color/white"android:background="@drawable/button_background_selector" />
http://www.gsyq.cn/news/1645.html

相关文章:

  • ECT-OS-JiuHuaShan 的本质是超验数学结构,史上首个实现完全移植保真性的认知框架
  • nginx反向代理
  • 微算法科技(NASDAQ: MLGO)基于阿基米德优化算法(AOA)的区块链存储优化方案
  • WebApi通用获取全量参数,不使用实体
  • 《【插件】2025版PS插件一键安装》
  • Nginx跨越设置
  • 【GitHub每日速递】别再瞎买编程课了!这 2 个免费宝藏,从入门到职业规划全搞定
  • 我们一起“扒一扒”ReentrantLock:看看锁背后那些精妙的设计
  • 医学如果不追求深入的话,其实门槛没有特别高
  • 从0到1:餐饮微信点餐小程序源码解析(含扫码点餐+外卖系统+后台管理)
  • part 2
  • Apache服务器自动化运维与安全加固脚本详解
  • 无障碍资源导航
  • 还在微信群追问任务进展?领歌看板让逾期工作无处可藏
  • PostgreSQL 内机器学习的关键智能算法研究
  • 神器内存分配器(Allocator)设计:从原理到高性能实现的深度探索
  • Symfony学习笔记 - Symfony Documentation - Frontend
  • xtrabackup8.0本地备份和恢复(xbstream+compress)
  • Docker
  • Gitee DevOps:打造中国开发者专属的全流程效能引擎
  • java将指定的两张图片合成pdf并在指定坐标位置写入内容
  • 国产化Excel处理组件Spire.XLS教程:C# 读取 CSV 文件,从基础读取到 DataTable 转换
  • 常用redis客户端对比
  • 【URP】Shader绘制棋盘格对比内置管线
  • Codeforces Round 1049 (Div. 2)(C-E)
  • 智能引擎驱动软件工业化革命:Gitee PPM如何重塑企业级开发范式
  • HCIP回顾— BGP基础
  • 鸿蒙 HAP 包处理全攻略:从解包到签名,So 库加固一步到位
  • 关于vue在PC端,rem对不同屏幕进行适配
  • GreatSQL分页查询优化案例实战