Die aktuelle Wischposition im Raster kann mit onGloballyPositioned nicht ermittelt werdenAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Die aktuelle Wischposition im Raster kann mit onGloballyPositioned nicht ermittelt werden

Post by Anonymous »

Ich versuche, Funktionen auszulösen, während der Benutzer über Zellen in einem Raster wischt.
Funktionen werden jedoch an zufälligen Positionen ausgelöst, auch außerhalb der Rastergrenzen.
Was muss ich ändern, um das Problem zu beheben?

Code: Select all

@Composable
fun SwipeDetectGrid() {
var childFrames by remember { mutableStateOf(emptyMap()) }
var currentOverChild by remember { mutableStateOf(null) }

fun updateOverChild(globalOffset: Offset) {
val overChild = childFrames.entries.firstOrNull { (_, rect) ->
rect.contains(globalOffset)
}?.key
currentOverChild = overChild
}

Box(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFFEFEFEF))
.pointerInput(Unit) {
detectDragGestures(
onDragStart = { offset -> updateOverChild(offset) },
onDrag = { change, _ -> updateOverChild(change.position) },
onDragEnd = { currentOverChild = null },
onDragCancel = { currentOverChild = null }
)
}
) {
Column(
modifier = Modifier
.fillMaxHeight()
.padding(16.dp)
) {
for (row in 0..2) {
Row(
modifier = Modifier.fillMaxWidth()
) {
for (col in 0..2) {
val index = row * 3 + col
Child(
index, { i, rect ->
childFrames = childFrames + (i to rect)
},
modifier = Modifier
.weight(1f)
.aspectRatio(1f)

)
}
}
}
}

currentOverChild?.let { id ->
Text(
text = "Over: Item $id",
color = Color.White,
modifier = Modifier
.background(Color.Black)
.padding(8.dp)
.align(androidx.compose.ui.Alignment.TopCenter)
)
}
}
}

@Composable
fun Child(i: Int, updateChildFrames: (Int, Rect) -> Unit, modifier: Modifier) {
Box(
modifier = modifier
.background(Color.Cyan)
.onGloballyPositioned { coordinates ->
val rect = coordinates.boundsInRoot()
updateChildFrames(i, rect)
},
contentAlignment = Alignment.Center
) {
Text(
text = "Item $i",
modifier = Modifier.padding(8.dp)
)
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post