Как полностью потреблять события прикосновения в JetPack Compose, чтобы предотвратить клики детей?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как полностью потреблять события прикосновения в JetPack Compose, чтобы предотвратить клики детей?

Сообщение Anonymous »

Я пытаюсь перехватить и употреблять все события нажимает на родительском уровне в JetPack Compose, чтобы детские композиции (например, кнопка) не получали клики. Однако, даже после вызова unsume () в AwaitPointerEventScope, ребенок все еще получает событие Click. < /P>
Вот мой код: < /p>

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

@Composable
fun ParentConsumesClick() {
Box(
modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
awaitPointerEventScope {
while (true) {
val event = awaitPointerEvent()
Log.d("Click", "Consumed in Parent")
event.changes.forEach { it.consume() } // Consume touch event
}
}
}
.background(Color.Gray),
contentAlignment = Alignment.Center
) {
Button(onClick = { Log.d("Click", "Child clicked") }) {
Text("Click Me")
}
}
}
< /code>
 Ожидаемое поведение: < /strong> < /p>

[*] Нажимая в любом месте внутри окна, чтобы журнал «Потребляется в родителях "
.
[*] Кнопка внутри не должна получать никаких щелчков (т.е." chlicked " не должна регистрироваться).
< /ul>
фактическое поведение: < /strong> < /p>

[*]

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

"Consumed in Parent"
зарегистрировано (показывая, что родитель получает событие).
[*] Но кнопка все еще получает событие Click и журналы «Child Clack» .
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/794 ... hild-click
Ответить

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

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

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

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

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