gpt4 book ai didi

android - 在自定义 View 上启用对讲时不调用 onTouchEvent

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:12 26 4
gpt4 key购买 nike

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

在我的自定义键盘中,我需要来自 MotionEvent 的坐标,以便 View 可以计算它被按下的绘制(值)。

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

最佳答案

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

要在启用辅助功能时捕获单击和/或覆盖此行为,应覆盖 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;
}

关于android - 在自定义 View 上启用对讲时不调用 onTouchEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com