Я строю функцию в приложении, используя JetPack Compose, где я хочу отобразить сетку элементов, которые пользователи могут переупорядочить, перетаскивая. В дополнение к повторному заказу я хотел бы позволить пользователям перетаскивать элемент за пределами сетки в определенную область, чтобы удалить его, аналогично тому, как некоторые приложения пускового средства позволяют вам перетаскивать значки в зону мусора. Библиотеки переупорядочивания: org.burnoutcrew.composereordoreable и sh.calvin.reorderable.
Я строю функцию в приложении, используя JetPack Compose, где я хочу отобразить сетку элементов, которые пользователи могут переупорядочить, перетаскивая. В дополнение к повторному заказу я хотел бы позволить пользователям перетаскивать элемент за пределами сетки в определенную область, чтобы удалить его, аналогично тому, как некоторые приложения пускового средства позволяют вам перетаскивать значки в зону мусора. Библиотеки переупорядочивания: org.burnoutcrew.composereordoreable и sh.calvin.reorderable.[code] data class GridItem(val id: Int, val text: String)
@Composable fun ReorderableGridViewScreen(modifier: Modifier = Modifier) { var items by remember { mutableStateOf(List(10) { GridItem(it,"Item $it") }) }
val lazyGridState = rememberLazyGridState() val reorderableLazyGridState = rememberReorderableLazyGridState(lazyGridState) { from, to -> items = items.toMutableList().apply { add(to.index, removeAt(from.index)) } }
val elevation by animateDpAsState(if (isDragging) 4.dp else 0.dp)
Surface(shadowElevation = elevation) { Box( modifier = Modifier .fillMaxSize() .background(Color.White) .padding(8.dp), contentAlignment = Alignment.Center ) { Text(text = item.text, style = MaterialTheme.typography.bodyMedium) IconButton( onClick = {}, modifier = Modifier .align(Alignment.BottomEnd) .draggableHandle() ) { Icon(Icons.Default.Favorite, contentDescription = null) } } } } } } } } < /code> Я также попробовал метод из перетаскивания и отброса в Compose CodeLab, но его больше передачи данных между одним элементом в другой. Что я не пытаюсь архивировать. Есть ли какое-либо готовое решение, которое мне не хватает, или я должен реализовать эту функцию с помощью modifier.offset () [/code]?