🐻❄️
[Jetpack Compose]ViewPagerのOverscrollエフェクトを消す
改善前
以下のようにViewPager
を実装すると、先頭の要素を左側にスワイプした場合、また最後尾の要素の右側にスワイプした場合、ViewPager
のItem
を伸び縮みさせるOverscroll
エフェクトが表示される。
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun CustomViewPager() {
val pagerCount = 3
HorizontalPager(pageCount = pagerCount) { index ->
val number = index + 1
Card(modifier = Modifier.size(256.dp)) {
Box(modifier = Modifier.fillMaxSize()) {
Text(
text = number.toString(),
fontSize = 32.sp,
modifier = Modifier.align(Alignment.Center)
)
}
}
}
}
改善方法
Overscroll
エフェクトの設定はCompositionLocalProvider
で指定されている。Overscroll
エフェクトはCompositionLocalProvider
のLocalOverscrollConfiguration
をnull
に設定することで無効化できる。
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun CustomViewPager() {
val pagerCount = 3
CompositionLocalProvider(
LocalOverscrollConfiguration provides null
) {
HorizontalPager(pageCount = pagerCount) { index ->
val number = index + 1
Card(modifier = Modifier.size(256.dp)) {
Box(modifier = Modifier.fillMaxSize()) {
Text(
text = number.toString(),
fontSize = 32.sp,
modifier = Modifier.align(Alignment.Center)
)
}
}
}
}
}
参考記事
Discussion