我试图拦截同一视图上的拖动事件以及双击事件,这样,如果用户双击同一视图,我可以将视图拖动到放置位置或打开对话框。问题在于使用SimpleOnGestureListener拦截MotionEvent时。设置View后的ACTION_DOWN事件。DragShadowBuilder(视图),永远不会调用onDoubleTap。关于如何允许拖动和双击视图,有什么想法吗?我想有一种可能是取消这个视图。在MotionEvent上启动拖动。ACTION_CANCEL或SimpleOnGestureListener的onSingleTapUp方法,但到目前为止,我还没有找到一种取消拖动的方法,如果这样做可行的话。谢谢
在适配器getView中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
// AlbumHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
}
final GestureDetector gdt = new GestureDetector(getActivity(),new GestureListener(textview,storyItem));
textview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
action = event.getActionMasked();
return gdt.onTouchEvent(event);
}
});
活动中的外部适配器:
private class GestureListener extends SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
return true;
}
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e){
Toast.makeText(getActivity(), "double tapped", Toast.LENGTH_SHORT).show();
showDialog();
return true ;
}
}
我以前遇到过同样的问题,我所做的是我移动了拖拽
因此您可以改用onLongPress
@Override
public void onLongPress(MotionEvent motionEvent) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
}
希望这对你有帮助。
问题内容: 我有一个app.js,用于在接收到一些POST数据时触发两个事件: 将POST数据插入数据库 使用WebSocket向客户端发送消息 这是 app.js (仅重要的 几 行) 这是 server.js (仅重要的 几 行) 我想要实现的是以侦听应用程序相同端口的方式设置WebSocketServer。我考虑过将 服务器 var从 app.js 传递到 server.js, 但是 我认为
@覆盖公共void onBindViewHolder(@NonNull ViewHolder holder,int位置){ 在onBindViewHolder中,我想调用另一个活动,但每次调用侦听器时,都会打开同一个活动。注意:Recycler是通过另一个cardview活动从MYSQL获取值的
我正在尝试通过拖放创建一个可重新排序的。 基本上,当我在中拖动一些东西时,它应该根据拖动情况重新排序。 我有这个,里面有6个。 所以看起来就像下面的截图 我已经按照下面的代码在中为LongClickListner和DragListener注册了所有 因此,当您将红色的拖动到灰色的时,将调用。然后,我只需移除红色的并将其添加到已结束的灰色的索引中,这样我就可以实时重新排序。因此,当我在中移动时,我得
问题内容: 我有主要的应用程序在哪里与值表。然后,我单击“添加”按钮,新的CUSTOM(我自己创建)出现了JDialog类型弹出窗口。在这里,我可以输入值,打一些勾,然后单击“确认”。因此,我需要从对话框中读取该输入,以便可以将此值添加到主应用程序中的表中。按下“确认”按钮时如何收听,以便在此之后可以读取该值? 问题答案: 如果在用户按下后对话框消失,请确认: 你希望有对话的行为如同一个 模态 的
我有一个有2个元素的回收器视图。我想添加2个按钮来做不同的事情(取决于回收器视图的哪个元素。怎么可能做到这一点?我的元素是文本视图 设置ctiv.kt 我的适配器。kt