AmrJyniat
05/26/2025, 11:24 AMLazyHorizontalGrid when implementing it inside HorizontalPager , the scrolling behaviour working fine on LazyHorizontalGrid when scroll to the next page direction, but when swipe pager to the previous page, it starts scrolling the items in the previous LazyHorizontalGrid page even before settle to the target page, how to prevent scrolling items when swiping between pages in pager?AmrJyniat
05/26/2025, 11:26 AMHorizontalPager and `LazyHorizontalGrid`:
HorizontalPager(
state = pagerState,
modifier = Modifier.fillMaxWidth(),
) { index ->
val paletteGroup = palettesGroups[index]
PalettesPage(
pageIndex = index,
selectedColor = selectedColor,
paletteItems = paletteGroup.items,
preDefinedItems = preDefinedItems,
numberOfRows = numberOfRows,
modifier = modifier,
height = height,
onColorSelected = onColorSelected,
)
}
@Composable
private fun PalettesPage(
selectedColor: ColorItem?,
paletteItems: List<ColorItem>,
preDefinedItems: List<@Composable ((() -> Unit) -> Unit)>,
numberOfRows: Int,
modifier: Modifier,
height: Dp,
onColorSelected: (ColorItem) -> Unit,
pageIndex: Int,
) {
val gridScrollState = rememberLazyGridState()
var selectedIndex by remember { mutableStateOf(0) }
LazyHorizontalGrid(
state = gridScrollState,
rows = GridCells.Fixed(numberOfRows),
contentPadding = PaddingValues(horizontal = 12.dp),
modifier = modifier
.fillMaxWidth()
.height(height),
verticalArrangement = Arrangement.spacedBy(8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
itemsIndexed(paletteItems) { index, item ->
PaletteItem(
modifier = Modifier
.offset(x = if (numberOfRows == 2 && index % 2 == 1) 24.dp else 0.dp)
.size(44.dp),
isSelected = selectedIndex == index + preDefinedItems.size,
onSelected = {
onColorSelected(item)
selectedIndex = index + preDefinedItems.size
},
colorItem = item,
isNew = false,
isPremium = false,
)
}
}
}Ori Spokoini
05/26/2025, 4:25 PMAltynbek Nurtaza
05/29/2025, 5:21 AMAmrJyniat
05/29/2025, 8:15 AM