Android: 如何防止拖动被误解为长按

4
当我插入代码以显示上下文菜单时,它能正常工作,但是菜单不仅会在静止长按后出现,还会在拖动结束时(不需要)出现。
我已经通过以下方法解决了这个问题:向视图添加一个ScrollInProgress标志,在onCreateContextMenu(...)方法开始时检查该标志,如果该标志被设置,则跳过添加项目到上下文菜单的代码。
但是,我想知道是否有更简单的方法来防止在屏幕拖动时创建上下文菜单。

我们没有看到代码就无法了解情况。请展示一下您是如何检测拖动/长按的。 - Falmarri
回答Falmarri:我定义了一个扩展SimpleOnGestureListener的类MyGestureDetector;在这个类中,重写了onScroll(...)方法,并在那里将scrollInProgress标志设置为true;在应用程序的主Activity中,有一行代码gestureDetector = new GestureDetector(new MyGestureDetector());。这就是如何检测滚动(拖动)的开始。长按只需在主Activity的onCreate(...)中插入命令registerForContextMenu(myView);,然后编写onCreateContextMenuonContextItemSelected的代码即可检测到。 - prepbgg
请告诉我是否需要完整填写此描述。 - prepbgg
1个回答

0

为了澄清,不是手势检测器捕捉到了长按手势吗?如果是的话,可以使用setIsLongpressEnabled(boolean isLongpressEnabled)方法来禁用它。


谢谢您的回答。我希望该应用程序能够在拖动未进行时检测到长按(并显示上下文菜单)。您是指我应该在MyGestureDetector的onScroll方法中将setIsLongpressEnabled设置为false(我当前设置了我的ScrollInProgress标志),并在检测到滚动结束时将setIsLongpressEnabled设置为true吗? - prepbgg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接