在自定义视图上启用对讲时,不会调用 onTouchEvent

2024-01-01

我正在为密码字段实现自定义键盘(通过自定义视图)并尝试添加辅助功能,因此当用户单击视图时,它应该读出所选值。

在我的自定义键盘中,我需要来自的坐标MotionEvent因此视图可以计算按下的绘图(值)。

但在这种情况下,当 Talkback 启用时onTouchEvent方法未被调用。仅当用户双击视图时才会调用。我正在尝试添加自定义OnTouchListener但它不起作用。setFocusable=true and setFocusableInTouchMode=true.


对于那些遇到这个问题并寻求解决方案的人; 当辅助功能(Talkback)启用时,onTouchEvent单击时不会调用该方法,而是双击时会调用该方法。

要在启用辅助功能时捕获单击,和/或覆盖此行为,onHoverEvent的方法View类应该被覆盖。通过使用此方法,您可以捕获单点触摸down as ACTION_HOVER_ENTER, move as ACTION_HOVER_MOVE and up as ACTION_HOVER_EXIT.

您也可以通过修改 catch 的操作来覆盖此行为MotionEvent并将其发送至onTouchEvent方法如下图:

@Override
public boolean onHoverEvent(MotionEvent event) {
    if (accessibilityManager.isTouchExplorationEnabled() && event.getPointerCount() == 1) {
        final int action = event.getAction();
        switch (action) {
            case MotionEvent.ACTION_HOVER_ENTER: {
                event.setAction(MotionEvent.ACTION_DOWN);
            } break;
            case MotionEvent.ACTION_HOVER_MOVE: {
                event.setAction(MotionEvent.ACTION_MOVE);
            } break;
            case MotionEvent.ACTION_HOVER_EXIT: {
                event.setAction(MotionEvent.ACTION_UP);
            } break;
        }
        return onTouchEvent(event);
    }
    return true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在自定义视图上启用对讲时,不会调用 onTouchEvent 的相关文章

随机推荐