0
我正在嘗試開發一種應用程序抽屜。我使用帶有適配器的gridview來繪製圖標。我想實現drap &放在他們上面,所以我寫了一個ontouchlistener,在其他元素上工作正常,但在gridview中的圖標有一些問題...GridView元素上的OnTouchListener
當我長按一個圖標,我可以將其水平拖拽,但僅限垂直於像素的某個像素,而不是MotionEvent.ACTION_CANCEL,拖動停止並且網格視圖開始滾動。 我該如何避免它?我tryed gridview.setEnable(false),爲了使不可滾動的gridview,但拖動停止像以前一樣..
有人可以幫助我嗎?這裏是一些代碼,如果它可以幫助...
@Override
public boolean onTouch(View view, MotionEvent me) {
int action = me.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
status = START_DRAGGING;
params = new RelativeLayout.LayoutParams(dim,dim);
params.leftMargin=(int) me.getRawX()-60;
params.topMargin= (int) me.getRawY()-90;
parenty=bglayout.getHeight();
view.setDrawingCacheEnabled(true);
image.setImageBitmap(view.getDrawingCache());
bglayout.addView(image, params);
grview.setOnItemSelectedListener(null);
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
status = STOP_DRAGGING;
Log.v("Drag", "Stopped Dragging");
bglayout.removeView(image);
break;
case MotionEvent.ACTION_MOVE:
if (status == START_DRAGGING) {
System.out.println("Dragging");
params = new RelativeLayout.LayoutParams(dim,dim);
params.leftMargin= (int) Math.min(me.getRawX()-dim/2, bglayout.getWidth()-dim) ;
params.topMargin= (int) Math.min(me.getRawY()-dim/2, bglayout.getHeight()-dim) ;
Log.v("DRAG", params.leftMargin + " " + params.topMargin);
image.setLayoutParams(params);
image.invalidate();
}
}
return false;
}