0

0

Android selector item android:state_hovered 鼠标悬停样式

星降

星降

发布时间:2026-03-02 11:33:10

|

106人浏览过

|

来源于php中文网

原创

android:state_hovered在多数android移动设备上不生效,仅限外接鼠标或模拟悬停的chromebook/模拟器;应优先使用onhoverlistener并注意资源混淆保留。

android selector item android:state_hovered 鼠标悬停样式

Android selectorandroid:state_hovered 根本不生效?

绝大多数情况下,android:state_hovered 在真机上完全没反应——不是你写错了,是 Android 系统压根不给它机会。从 Android 4.0 到 14,只有极少数带真正触摸板或外接鼠标且开启“模拟悬停”的设备(比如部分 Chromebook 或调试中的模拟器)会触发该状态。普通手机、平板连触摸事件都走 state_pressed,根本不会进 state_hovered 分支。

实操建议:

凡科AI抠图
凡科AI抠图

简单好用的在线抠图工具

下载
  • 别在面向移动设备的 UI 中依赖 android:state_hovered 做核心交互反馈
  • 如果必须支持鼠标悬停(比如折叠屏/大屏模式),先用 Configuration.uiMode 判断是否处于 UI_MODE_TYPE_DESKUI_MODE_TYPE_CAR
  • View.setOnHoverListener() 手动监听 MOTION_EVENT_ACTION_HOVER_ENTER/EXIT,比靠 selector 可靠得多

为什么 selector 里写了 state_hovered 却总匹配到 state_focused

因为 Android 的状态匹配是「按顺序找第一个全匹配项」,而 state_focusedstate_hovered 在多数输入场景下会同时为 true(比如鼠标移入一个可聚焦的 Button)。如果你把 state_focused 的 item 写在 state_hovered 前面,系统就永远选不到后者。

实操建议:

  • 把最具体的组合放前面:比如 <item android:state_hovered="true" android:state_focused="false"></item> 要比单独 state_hovered 更准
  • 避免混用 state_focusedstate_hovered 在同一 selector 中,除非你明确控制焦点获取逻辑
  • adb shell dumpsys input_method 或布局检查器确认当前 View 的实际状态值

替代方案:用 View.OnHoverListener 实现可靠悬停反馈

比起赌系统会不会发 state_hovered,直接监听更可控。它不依赖主题、不被 selector 顺序干扰,还能做渐变、延迟显示等原生 selector 做不了的事。

实操建议:

  • onCreate()onViewCreated() 中注册:view.setOnHoverListener((v, event) -> { ... })
  • 只响应 event.getAction() == MotionEvent.ACTION_HOVER_ENTERACTION_HOVER_EXIT,忽略 ACTION_HOVER_MOVE(太频繁)
  • 配合 ValueAnimator 做颜色过渡,比 selector 切换更顺滑;注意在 ACTION_HOVER_EXIT 时取消动画防止内存泄漏
  • 记得在 onDestroy()onViewDetachedFromWindow() 中设为 null,避免隐式引用

混淆和构建时 state_hovered 属性被删掉?

AGP 8.0+ 默认启用资源压缩(shrinkResources true),而 android:state_hovered 是较冷门属性,R8 可能误判为未使用并移除对应资源 ID,导致运行时报 ResourceNotFoundException 或静默失效。

实操建议:

  • res/raw/keep.xml 中显式保留:<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/*,@color/*"></resources>
  • 或者在 proguard-rules.pro 加一行:-keep class android.R$attr { public static int state_hovered; }
  • 验证方式:反编译 APK,搜 state_hovered 是否还在 resources.arsc
真正麻烦的不是怎么写对这个属性,而是得时刻记住:它只在特定硬件 + 特定系统配置 + 特定 UI 模式下才可能起作用。其他时候,它就是个安静的摆设。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

249

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

967

2024.03.01

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1937

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2116

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1142

2024.11.28

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

910

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

595

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

294

2025.08.29

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

43

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 19.5万人学习

Java 教程
Java 教程

共578课时 | 74.9万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号