如何在Android中收听Talkback的焦点变化?

时间:2015-10-06 14:02:12

标签: android accessibility talkback

我正致力于改善应用内的辅助功能。

我的卡布局相当复杂。每张卡片里面都有一些可点击的对象,但它也有全局点击监听器。

当我启用对讲时,选择卡(不是里面的东西!),双击(打开卡),卡在卡的中间获得触摸事件。 结果,嵌套对象得到了click事件并分别作出反应。

问题是如何确定哪个项目在TalkBack的焦点中(绿色矩形对我而言)?如果卡本身是焦点,那么这个想法是禁用内部触摸侦听器。

我想支持的API级别是 16 (Android 4.1 +)

谢谢!

1 个答案:

答案 0 :(得分:4)

我认为最适合您的方法是覆盖布局视图的辅助功能委托,监听辅助功能焦点事件。将焦点添加到卡片时,请移除侦听器,当焦点离开您的卡片时,重新连接您的听众。将此委托附加到您的布局视图,您应该能够观察布局中的各种视图,并放弃可访问性焦点。

class MyAccessibilityDelegate extends View.AccessibilityDelegate {

    @Override
    public boolean onRequestSendAccessibilityEvent(ViewGroup viewGroup, View child, AccessibilityEvent event) {

        if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
            //Do stuff in here!  Maybe also do different stuff when focus is cleared!
        }

        return super.onRequestSendAccessibilityEvent(viewGroup, child, event);
    }


}

此API的API已添加到API级别14中,因此您应该很高兴!