[英]AppWidgetHostView touch events not working properly
如您所知,AppWidgetHostView不能很好地长按,并且在使用registerForContextMenu(host view)时也无法打开。
我创建了一个自AppWidgetHostView派生的自定义主机视图,并覆盖了触摸事件以显示上下文菜单。
但是副作用很严重,这不是因为我的代码,而是因为AppWidgetHostView的结构以及基于小部件的本质(而不是我的代码)传递和处理触摸事件的方式有所不同。
例如,下面的代码在点击(Clock digital)小部件时会触发down&up事件,顺便说一下,该小部件没有附加的活动。 但是上下事件都不会使用(Calendar)小部件触发,而是打开日历活动。
因此,日历小部件会消耗事件,这与数字时钟不同。
万一您想到了onInterceptTouchEvent,它会变得越来越糟...当我在“数字时钟”小部件上点击时,不会触发Up事件,这会使上下文菜单看起来像是长按。
经过两天的阅读,应用和测试,但我找不到适合所有类型的小部件的解决方案。
谢谢
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch(ev.getActionMasked() ) {
case MotionEvent.ACTION_DOWN:
mDownUp = 0;
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
mDownUp = 1;
break;
}
return true;
}
@Override
public boolean onInterceptTouchEvent (MotionEvent ev) {
switch(ev.getActionMasked() ) {
case MotionEvent.ACTION_DOWN:
mDownUp = 0;
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
mDownUp = 1;
break;
}
return false;
}
顺便说一句,我没有同时使用/覆盖onInterceptTouchEvent和onTouchEvent,而是分别尝试了每一个。
使用openlauncher我也有同样的问题。 我开始重新研究系统应用程序小部件,并在日历小部件中发现
android:focusable="true"
android:clickable="true"
小部件的布局是有帮助的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.