0
我试图拦截拖动事件以及同一视图上的双击事件,从而可以将视图拖到放置位置,或者如果用户双击相同视图,则可以打开对话框。问题是在设置View.DragShadowBuilder(view)后,使用SimpleOnGestureListener拦截MotionEvent.ACTION_DOWN事件时,onDoubleTap从不会被调用。有关如何让视图被拖动以及双击的任何想法?我想可能是取消view.startDrag在SimpleOnGestureListener的MotionEvent.ACTION_CANCEL或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 ;
}
}