如何在 Jetpack 撰写的 HorizontalPager 中检测滑动?
How to detect swipe in HorizontalPager in Jetpack compose?
如何在我的 HorizontalPager()?
中检测用户何时从一个选项卡滑动到第二个选项卡等等
val pagerState = rememberPagerState(initialPage = 0)
HorizontalPager(count = TabCategory.values().size, state = pagerState) { index ->
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.onBackground)
) {
when (TabCategory.values()[index]) {
TabCategory.Opinion -> { }
TabCategory.Information -> { }
TabCategory.Videos -> { }
}
}
}
在您的视图模型中,创建一个 pagerState 并监视其当前页面:
class MyViewModel : ViewModel() {
val pagerState = PagerState()
init {
viewModelScope.launch {
snapshotFlow { pagerState.currentPage }.collect { page ->
// Page is the index of the page being swiped.
}
}
}
}
在您的可组合项中,使用 pagerState:
HorizontalPager(
state = myViewModel.pagerState,
) { page ->
}
A PagerState
有一个 InteractionSource
跟踪那些东西。 collectIsDraggedAsState
returns 您可以订阅的 State<Boolean>
方法通过 .value
.
公开其当前值
这似乎测试得很好。
@Composable
fun ExampleComposable(){
val pagerState=rememberPagerState()
val isDragged=pagerState.interactionSource.collectIsDraggedAsState()
HorizontalPager(count = injector.snippets.size,
state = pagerState,
){index->
MyFancyExampleComposable(index)
if (isDragged.value){
respondToPageSwipeOrPartialPageSwipe()
}
}
}
如何在我的 HorizontalPager()?
val pagerState = rememberPagerState(initialPage = 0)
HorizontalPager(count = TabCategory.values().size, state = pagerState) { index ->
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.onBackground)
) {
when (TabCategory.values()[index]) {
TabCategory.Opinion -> { }
TabCategory.Information -> { }
TabCategory.Videos -> { }
}
}
}
在您的视图模型中,创建一个 pagerState 并监视其当前页面:
class MyViewModel : ViewModel() {
val pagerState = PagerState()
init {
viewModelScope.launch {
snapshotFlow { pagerState.currentPage }.collect { page ->
// Page is the index of the page being swiped.
}
}
}
}
在您的可组合项中,使用 pagerState:
HorizontalPager(
state = myViewModel.pagerState,
) { page ->
}
A PagerState
有一个 InteractionSource
跟踪那些东西。 collectIsDraggedAsState
returns 您可以订阅的 State<Boolean>
方法通过 .value
.
这似乎测试得很好。
@Composable
fun ExampleComposable(){
val pagerState=rememberPagerState()
val isDragged=pagerState.interactionSource.collectIsDraggedAsState()
HorizontalPager(count = injector.snippets.size,
state = pagerState,
){index->
MyFancyExampleComposable(index)
if (isDragged.value){
respondToPageSwipeOrPartialPageSwipe()
}
}
}