我有一个以下ListActivity:
public class ShowDayActivity extends ListActivity implements OnItemClickListener { private GestureDetector gestureDetector; private View.OnTouchListener gestureListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.day); registerForContextMenu(getListView()); gestureDetector = new GestureDetector(new MyGestureDetector()); gestureListener = new View.OnTouchListener() { @Override public boolean onTouch(View v,MotionEvent event) { return gestureDetector.onTouchEvent(event); } }; getListView().setOnItemClickListener(this); getListView().setOnTouchListener(gestureListener); } @SuppressWarnings("static-access") @Override public boolean onOptionsItemSelected(MenuItem item) { ... return super.onOptionsItemSelected(item); } @Override public boolean onContextItemSelected(MenuItem item) { ... return super.onContextItemSelected(item); } Override public void onItemClick(AdapterView<?> parent,View v,int pos,long id) { editEvent(pos); } class MyGestureDetector extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; @Override public boolean onFling(MotionEvent e1,MotionEvent e2,float velocityX,float velocityY) { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { return false; } // right to left swipe if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Log.d("ICS-Calendar","Fling left"); return true; } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Log.d("ICS-Calendar","Fling right"); return true; } return false; } } }
listItems上的contextListener(long-click)完美地工作.今天我添加了gestureListener和Detector,它也是这样,但是:
GestureDetector检测到一切都没有了,但是在完成了逻辑之后,会打开上下文菜单,这显然不是我想要的.任何想法我做错了,还是我可以做什么?