Wie verbrauche ich Touch -Events in Jetpack komponieren, um Kinderklicks zu verhindern?Android

Forum für diejenigen, die für Android programmieren
Guest
 Wie verbrauche ich Touch -Events in Jetpack komponieren, um Kinderklicks zu verhindern?

Post by Guest »

Ich versuche, alle Klick -Ereignisse auf der übergeordneten Ebene in Jetpack komponieren und zu konsumieren, damit untergeordnete Komponisten (wie eine Schaltfläche) keine Klicks erhalten. Aber auch nach dem Anruf conseum () in AwaitPoInterEventsCope erhält das Kind das Klick -Ereignis.

Code: Select all

@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>
 Erwartete Verhalten: < /strong> < /p>

[*] Klicken Sie auf irgendwo im Feld im Feld "konsumiert in Eltern konsumiert "
.
[*] Die Schaltfläche Innere sollte keine Klicks empfangen (d. H." Child klickte " sollte nicht protokolliert werden).
< /ul>
Tatsächliches Verhalten: < /strong> < /p>

Code: Select all

"Consumed in Parent"
wird protokolliert (zeigt, dass der übergeordnete Elternteil das Ereignis empfängt).
< /ul>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post