viewpager jetpack compose 中的垂直滚动不起作用

Posted

技术标签:

【中文标题】viewpager jetpack compose 中的垂直滚动不起作用【英文标题】:vertical scroll in viewpager jetpack compose is not working 【发布时间】:2022-01-14 08:12:12 【问题描述】:

在使用 Accompanist 的 Horizo​​ntal View Pager 中面临垂直滚动问题。无法滚动列 垂直在 Horizo​​ntalViewPager 内。因此,请查看代码并更正如何修复它或任何其他解决方案。如果可能,将不胜感激。

                HorizontalPager(
                count = 10,
                modifier = Modifier.fillMaxSize()
            )  page ->



                Column(
                    modifier = Modifier
                        .fillMaxWidth()
                        .fillMaxHeight(),
                )
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                
            

使用 Column 时无法垂直滚动。如果尝试使用 LazyColumn 会产生错误。这是伴奏 ViewPager 链接 Accompanist Library

【问题讨论】:

【参考方案1】:

使用 LazyColumn 检查

           LazyColumn(
            modifier = Modifier
                .padding(16.dp)
                .fillMaxSize()
             ) 
                 item 
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                    Spacer(modifier = Modifier.height(16.dp))
                    ScoreCardListItem()
                   
                

【讨论】:

谢谢,它成功了。实际上,我在 Composable 函数中使用了 Column 。这就是它生成错误、删除 Colum 并放入 item 的原因。然后它起作用了。解决方案是 LazyColumn。

以上是关于viewpager jetpack compose 中的垂直滚动不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有片段和 Jetpack 导航的 Viewpager2:恢复片段而不是重新创建它们

Jetpack All In Compose ?看各种Jetpack库在Compose中的使用

Android Jetpack Compose学习—— Jetpack compose基础布局

Android Jetpack Compose学习—— Jetpack compose基础布局

Android Jetpack Compose学习—— Jetpack compose基础布局

Android Jetpack Compose学习—— Jetpack compose入门