동일한보기에서 드래그 이벤트와 가로 챈 이벤트를 가로 채려고 시도하므로 사용자가 드롭보기 위치로 드래그하거나 사용자가 동일한보기를 두 번 탭하면 대화 상자를 열 수 있습니다. 문제는 SimpleOnGestureListener를 사용하여 View.DragShadowBuilder (view)를 설정 한 후 MotionEvent.ACTION_DOWN 이벤트를 가로 챌 때 onDoubleTap이 호출되지 않을 때입니다. 보기를 끌 수있는 방법에 대한 아이디어뿐만 아니라 더블 도청? 가능한 경우 SimpleEventGenerationListener의 MotionEvent.ACTION_CANCEL 또는 onSingleTapUp 메서드에서 view.startDrag를 취소 할 가능성이 있다고 생각했지만 지금까지는 드래그를 취소 할 방법을 찾지 못했습니다. 감사. 활동에동일한보기에서 리스너를 두 번 탭하고 드래그합니까?
@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);
}
});
외부 어댑터 : 어댑터의 getView에서
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 ;
}
}