Проблема вертикального перетаскивания DetectDragGesture в LazyColumnAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема вертикального перетаскивания DetectDragGesture в LazyColumn

Сообщение Anonymous »

Код: Выделить всё

val users = state.data.toMutableStateList()
val dragAndDropListState = rememberDragAndDropListState(lazyListState) { from, to ->
users.move(from, to)
}
LazyColumn(
modifier = Modifier
.fillMaxSize()
.weight(1f)
.pointerInput(Unit) {
val initialTouchPosition = mutableStateOf(Offset.Zero)

detectDragGestures(

onDrag = { change, offset ->
change.consume()
dragAndDropListState.onDrag(offset)

if (overscrollJob?.isActive == true) return@detectDragGestures

dragAndDropListState
.checkOverscroll()
.takeIf { it != 0f }
?.let {
overscrollJob = coroutineScope.launch {
dragAndDropListState.lazyListState.scrollBy(it)
}
} ?: kotlin.run { overscrollJob?.cancel() }

},
onDragStart = { offset ->
if (offset.getDistance() > 10.dp.toPx()) {
initialTouchPosition.value = offset
dragAndDropListState.onDragStart(offset)
}
},
onDragEnd = { dragAndDropListState.onDragInterrupted() },
onDragCancel = { dragAndDropListState.onDragInterrupted() },

)
}, state = dragAndDropListState.lazyListState
) {
itemsIndexed(users) { index, user ->
ItemCard(userEntityUi = user, modifier = Modifier.composed {
val offsetOrNull = dragAndDropListState.elementDisplacement.takeIf {
index == dragAndDropListState.currentIndexOfDraggedItem
}
Modifier.graphicsLayer {
translationY = offsetOrNull ?: 0f
}
})
}
}

Я реализую детектор DragGestures в Jetpack Compose LazyColumn, чтобы разрешить вертикальное перетаскивание. Однако я заметил проблему, из-за которой перетаскивание по вертикали не работает, если я сначала не сделаю небольшой жест горизонтального перетаскивания. После этого вертикальное перетаскивание начинает работать должным образом.
Как исправить эту проблему, чтобы вертикальное перетаскивание работало сразу, не требуя горизонтального перемещения?
Изображение

@thracian ждет помощи с вашей стороны

Подробнее здесь: https://stackoverflow.com/questions/792 ... lazycolumn
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»