Я пытаюсь разработать вид приложений.Я использую gridview с адаптером для рисования иконок.Я хотел бы реализовать Drap & Drop для них, поэтому я написал ontouchlistener, который отлично работает на других элементах, но имеет некоторые проблемы с иконкой в виде сетки ...
Когда я долго нажимаю на иконку, я могуперетащите его горизонтально, но только для некоторого пикселя по вертикали, чем MotionEvent.ACTION_CANCEL, чем событие motionement, перетаскивание прекращается и вид сетки начинает прокручиваться.Как я могу избежать этого?Я попытался gridview.setEnable (false), чтобы отключить просмотр сетки, но перетаскивание, как и раньше, прекращается.
Может кто-нибудь мне помочь?Вот код, если он может помочь ...
@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;
}