[英]Prevent RecycleView from scrolling when onTouchEvent() is called in custom view
[英]onTouchEvent is not called when talkback enabled on custom view
我正在为密码字段实现自定义键盘(通过自定义视图)并尝试添加辅助功能,因此当用户单击视图时,它应该发出选定的值。
在我的自定义键盘中,我需要来自MotionEvent
坐标,因此视图可以计算它被按下的绘制(值)。
但是在这种情况下,没有调用启用了对话功能的onTouchEvent
方法。 只有当用户双击视图时才会调用。 我试图添加自定义OnTouchListener
但它不起作用。 setFocusable=true
和setFocusableInTouchMode=true
。
对于那些遇到这个问题并寻找解决方案的人; 启用辅助功能(对讲)时, onTouchEvent
不会调用onTouchEvent
方法,而是在双击时调用它。
要在启用可访问性时捕获onHoverEvent
,和/或覆盖此行为,应覆盖View
类的onHoverEvent
方法。 通过使用此方法,您可以捕获单个触摸按下 ACTION_HOVER_ENTER
, 移动为ACTION_HOVER_MOVE
, 向上 移动为ACTION_HOVER_EXIT
。
您也可以通过修改捕捉的动作覆盖此行为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;
}
启用TalkBack时,双击相当于单击。 也就是说,只有当用户双击视图/窗口小部件时才会调用onTouchEvent。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.