Возвращение в исходном коде строки, которая использовалась для чтения:
return action == MotionEvent.ACTION_MOVE
&& scroll != null
&& !ignoreEvents
&& state != STATE_DRAGGING
&& !parent.isPointInChildBounds(scroll, (int) event.getX(), (int) event.getY())
&& Math.abs(initialY - event.getY()) > viewDragHelper.getTouchSlop();
}
Появляется для чтения в более поздних версиях:
return action == MotionEvent.ACTION_MOVE
&& scroll != null
&& !ignoreEvents
&& state != STATE_DRAGGING
&& !parent.isPointInChildBounds(scroll, (int) event.getX(), (int) event.getY())
&& viewDragHelper != null
&& Math.abs(initialY - event.getY()) > viewDragHelper.getTouchSlop();
}
Кажется, что это должно быть исправлено.Хотя некоторые другие функции, по-видимому, очищают значение viewDragHelper, поэтому может быть трудно воспроизвести его в целом.
В некоторых версиях может показаться, что вы могли бы получить ошибку нулевого указателя, если выполнили сенсорное перемещение до onLayoutChild ()получил вызов.Кажется, что это может быть трудно сделать.Но явно не проверяет это.
Очевидно, что предполагалось исправить, но я не вижу явной проверки в источнике, и их шаги по воспроизведению могут все равно помочь.
https://github.com/material-components/material-components-android/issues/43
"Это может происходить на старых / более медленных устройствах путем рассылки спама событий касания нижнего листа во время создания макета."