0
我試圖在我的gridview上阻止Androids drag and drop。我爲網格適配器中的每個視圖設置了一個dragListener。當網格不夠長或不可滾動時,或者只要網格中的第一個視圖可見時,它就可以滾動。滾動時,它將動作向下移動一個位置,因爲許多視圖在頂部不可見,而不在正確的位置。適配器的內部Android Drag and Drop GridView
GridView控件集DragListener:
ImageView i = new ImageView;
i.setImageResource(ImageList.get(position));
i.setOnDragListener(new MyDragImageListener(position));
return i;
MyDragListener:
public class MyDragImageListener implements OnDragListener{
int imagePosition;
public MyDragImageListener(int position) {
imagePosition = position;
}
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.i("DRAG Started", "" + imagePosition);
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.i("DRAG Entered", "" + imagePosition);
ImageView imageEnter = (ImageView) Grid.getChildAt(imagePosition);
imageEnter.setBackgroundColor(Color.argb(155, 100, 200, 255));
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.i("DRAG Exited", "" + imagePosition);
ImageView imageExit = (ImageView) Grid.getChildAt(imagePosition);
imageExit.setBackgroundColor(Color.argb(0, 0, 0, 0));
break;
case DragEvent.ACTION_DROP:
Log.i("DRAG Dropped", "" + imagePosition);
break;
case DragEvent.ACTION_DRAG_ENDED:
Log.i("DRAG Ended", "" + imagePosition);
default:
break;
}
return true;
}
}
你想說DragEvent正在返回screenPosition,你期望絕對位置或其他方式?爲什麼你不只是獲得滾動位置,並使用它作爲抵消 –
謝謝我試過這個,它看起來像它的工作。我剛開始使用拖放,並認爲這將是一個更復雜的解決方案,從來沒有想過嘗試。 – cange1