Теперь он записан в Google как ошибка и назначен для просмотра: Отчет об ошибках перетаскивания
Вот обходной путь, который стабилизирует приложение, чтобы люди могли его использовать иэто может быть даже вполне приемлемым решением для некоторых разработчиков, если они довольны изменениями пользовательского интерфейса.
Используйте OnLongClickListener вместо OnTouchListener, чтобы начать перетаскивание.Первоначально пользователь мог касаться и перетаскивать, и теперь они должны долго нажимать.При необходимости оставьте onTouch для выполнения некоторых других задач с помощью View, но переместите материал startDrag в onLongClickHandler.Например:
public boolean onLongClick(View v) {
//...
// get the card ready for dragging
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
shadowBuilder.getView().setAlpha(1.0f);
// deprecated. use startDragAndDrop but need minimum SDK to be 24
// the original position is sent as LocalState (third argument)
if (v.startDrag(null, shadowBuilder, position, 0)) {
// make the moving view's old position appear invisible since
// its replaced by the drag shadow
v.setAlpha(0f);
}
return true;
}
Когда startDrag запускался из onLongClick вместо onTouch, проблема полностью исчезла без каких-либо других изменений.Это не исправление, так как должна быть возможность начать перетаскивание из onTouchListener.