我正在为密码字段实现自定义键盘(通过自定义视图)并尝试添加辅助功能,因此当用户单击视图时,它应该读出所选值。
在我的自定义键盘中,我需要来自的坐标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(使用前将#替换为@)