Я пытаюсь обнаружить удары по элементам, помещенным в Lazyverticlegrid в Jetpack Compose. Код выглядит следующим образом: < /p>
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
SwipeTestsTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
SinglePlayerGameScreen(modifier = Modifier.padding(innerPadding))
}
}
}
}
}
@Composable
fun SinglePlayerGameScreen(modifier: Modifier) {
val configuration = LocalConfiguration.current
val screenWidthDp = configuration.screenWidthDp
val squareSizeDp = screenWidthDp / 10
LazyVerticalGrid(
horizontalArrangement = Arrangement.Center,
verticalArrangement = Arrangement.Top,
columns = GridCells.Fixed(10),
userScrollEnabled = false,
modifier = modifier.pointerInput(Unit) {
detectHorizontalDragGestures { offset, dragAmount ->
Log.d("Swipe Tests","Horizonzal drag $offset $dragAmount")
}
detectVerticalDragGestures { offset, dragAmount ->
Log.d("Swipe Tests","Vertical drag $offset $dragAmount")
}
}
) {
items(100) { index ->
BoardSquare(index, squareSizeDp)
}
}
}
@Composable
fun BoardSquare(index: Int, squareSizeDp: Int) {
Canvas(modifier = Modifier.width(squareSizeDp.dp).height(squareSizeDp.dp)) {
drawRect(color = Color.Blue, style = Stroke(width = 5f))
}
}
< /code>
Я отключил прокрутку в сетке с помощью userscrollenabled = false. Сетка создана настолько создана, что она полностью вписывается в один экран. < /P>
Если у меня есть два элемента в одно и то же время при модификации Pointerinput: Detecthorizontaldragesture, DetecterticalDragesture только горизонтальный удар признан. Если я прокомментирую Detecthorizontaldraggesture, обнаружено вертикальное удары. Как я могу изменить это поведение?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ck-compose