我在HorizontalPager中有三張卡片,我想在用戶滾動頁面時,將其偏移量像這樣。
val pagerState = rememberPagerState(pageCount = 3)
val currentIndex = pagerState.currentPage
水平傳呼機(HorizontalPager)
state = pagerState,
modifier = Modifier.fillMaxSize()
) { page ->
卡片(
modifier = Modifier
.fillMaxWidth(0.7f)
.fillMaxHeight(0.7f)
.padding(22.dp)
.offset(y = if (currentIndex == page) 0.dp else 70.dp)。
shape = RoundedCornerShape(30.dp),
高程 = 110.dp
) {}
}
uj5u.com熱心網友回復:
你可以使用pagerState.currentPageOffset來計算偏移量
當你滾動HorizontalPager時,currentPage將不會改變,直到你釋放拖動。當您向右滾動時,currentPageOffset從0f增加到1f,而當您向左滾動時,它從0f減少到1f。
在我的代碼中,我為每個頁面計算了offset:
- 當前頁面的偏移量
- 當前頁面的偏移量應該隨著我們向左和向右滾動而增加,所以我們可以采取
absoluteValue。 - 只要
currentPageOffset從0f變為-1f,左邊的頁面偏移就應該減少。 - 只要
currentPageOffset從0f增加到1f,右邊的頁面偏移就應該減少。
@Composable。
fun TestScreen() {
val pagerState = rememberPagerState(pageCount = 3)
val currentIndex = pagerState.currentPage
val currentPageOffset = pagerState.currentPageOffset
橫向呼叫器(HorizontalPager)
state = pagerState,
modifier = Modifier.fillMaxSize()
) { page ->
val offset = maxOffset * when ( page) {
currentIndex -> {
currentPageOffset.absoluteValue
}
currentIndex - 1 -> { currentPageOffset.absoluteValue }.
1 currentPageOffset.coerceAtMost(0f)
}
currentIndex 1 -> {
1 - currentPageOffset.coerceAtLeast(0f)
}
else -> {
1f
}
}
卡(
修改器 = 修改器
.fillMaxWidth(0.7f)
.fillMaxHeight(0.7f)
.padding(22.dp)
.offset(y = offset)。
shape = RoundedCornerShape(30.dp)。
高程=110.dp
) {}
}
}
private val maxOffset = 70.dp
結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330560.html
標籤:
