You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Compose中如何在无障碍模式下判断元素是否获得焦点?

Compose中捕获无障碍模式下的焦点状态变化

普通的focusable()和onFocusChanged监听的是键盘/触摸交互的焦点,而无障碍模式(如TalkBack)下的焦点属于独立的无障碍焦点体系,所以你之前的代码无法捕获到无障碍焦点变化。

要监听无障碍模式下的焦点状态,需要通过Modifier.semantics来操作组件的语义属性,这是Compose组件与无障碍服务交互的核心入口。

正确实现代码

Text(
    text = "message",
    modifier = Modifier
        .semantics {
            // 标记组件可被无障碍服务聚焦
            isFocusable = true
            // 监听无障碍焦点变化回调
            onFocusedChanged { isAccessibilityFocused ->
                if (isAccessibilityFocused) {
                    // 此处执行无障碍模式下获得焦点后的操作
                    // do stuff
                }
            }
        }
)

补充说明

  • 如果需要同时处理普通焦点和无障碍焦点,可以在Modifier中同时保留focusable().onFocusChanged { ... }和上述语义监听逻辑。
  • 确保使用的Compose版本在1.2.0及以上,部分语义API在旧版本中可能存在兼容性问题。

内容的提问来源于stack exchange,提问作者Dipsy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:52:36