Jetpack Compose detectTransformGestures использует все жесты

Я просмотрел следующий ответ, и он не сработал. Как использовать detectTransformGestures, но не использовать все события указателя.

Проблема : у меня есть LazyList, который мне нужно прокручивать по вертикали, дочерние составные элементы также можно перетаскивать по горизонтали и реагировать на нажатия и нажатия . Но я хочу, чтобы LazyList также был сжат или сжат, но при этом перехватывал жесты перетаскивания. Вот текущий код модификатора для существующих жестов:

                 /* LazyList child composable */ 
           Modifier.pointerInput(myLock) {
               detectDragGestures(
                   onDragEnd = {
                       if (fooBolean) {
                           stuffToDo()
                        },
                   onDrag = { change, dragAmount ->
                        draggingTheComposableLogic()

                        scope.launch {
                            /* Scrolling the lazylist using the state linked to it */ 
                            state.scroll {
                                 scrollBy(-dragAmount.y)
                            }
                        }
                   }
                )
           }
           .pointerInput(Unit) {
               detectTapGesturesUnconsumed(
                   onTap = {
                       scope.launch {
                            val press = PressInteraction.Press(Offset.Zero)
                            clickInteraction.emit(press)
                            delay(150)           
                            clickInteraction.emit(PressInteraction.Release(press))
                       }

                   }
                )
            }

Моя попытка : я попытался изменить исходный код для detectTransformGestures, чтобы удалить потребляемую часть, но это вообще не работает. Это работало для касания и перетаскивания, но не для жестов преобразования. Если я добавлю этот фрагмент кода для обнаружения увеличения и уменьшения масштаба (жест сжатия), то все остальное просто перестанет работать:

      /* This surface is situated on top of the lazylist, i know it's overlaying it, but then if I add the pointerInput modifier to the lazylist, it also won't work, nothing works, it seems like this modifier keeps blocking until the pointers are lifted */
Surface(modifier = Modifier.fillMaxSize().alpha(0f)
                    .pointerInput(Unit) {
                        detectTransformGestures(
                            onGesture = { c, p, z, r ->

                                Log.e("f", "$z")
                            }
                        )
                    }
                ) {}

Есть ли способ обнаружить жест ONLY-ZOOM, не потребляя его, чтобы я мог нормально перехватывать другие жесты?

0 ответов

Другие вопросы по тегам