3

How to make HorizontalPager center item on top of right items? (Blue is the "focused"/centered item from the viewpager)

I've tried playing with zIndex but without succeed

.zIndex(if(page == currentPage) 1f else 0f)

3 items in the ComposeViewPager 2 items in the ComposeViewPager

Additional code:

@Suppress("CorrectDpValuesDetector")
@Composable
private fun SquaresCodesPager(state: SquaresGroupState, onSelectedListener: (Int) -> Unit, onClickedListener: (Int) -> Unit) {
    val pagerState = rememberPagerState(initialPage = 0)
    LaunchedEffect(pagerState) {
        snapshotFlow { pagerState.currentPage }.collect { page ->
            onSelectedListener(page)
        }
    }
    HorizontalPager(
        itemSpacing = -Grid.DP_40,
        contentPadding = PaddingValues(horizontal = (LocalConfiguration.current.screenWidthDp.dp - QR_SIZE) / 2),
        count = state.items.size,
        state = pagerState
    ) { page ->
        Square(pagerState.currentPage, page, state.items[page].square, onClickedListener)
    }
}

@Composable
private fun PagerScope.Square(currentPage: Int, page: Int, bitmap: Bitmap, onClickListener: (Int) -> Unit) {
    Image(
        modifier = Modifier
            .graphicsLayer(animation(page))
            .zIndex(if (page == currentPage) 1f else 0f)
            .background(Background.BgSecondary)
            .size(SQUARE_SIZE),
        bitmap = ...
        contentDescription = ...
    )
}
rafaelasguerra
  • 2,685
  • 5
  • 24
  • 56

1 Answers1

1

It is now fixed in the release 1.5.0-alpha04.

https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.5.0-alpha04

Rafael Chagas
  • 774
  • 7
  • 13