Jetpack Compose 对Nested Scroll的新理解

之前学习嵌套滚动时,在网络上看到的案例基本都是将modifier.nestedScroll写在一个外层Constraint上,这将我带入一个误区,认为一定要让父布局的nested scroll管理所有子布局的滚动行为,但其实并不是,你要控制哪一个布局的滚动就将nested scroll加到哪一个布局的modifier上就行了,比如这是我之前的嵌套滚动布局

Column(modifier = Modifier.nestedScroll(nestedScrollConnection){
    ScrollableTabRow(){}
    LazyColumn(){}
}

这样的布局确实可以运行,但是嵌套滚动会影响Scroll able Tab Row的滚动行为,产生了拖动tabRow后无法点击的bug。

所以我不得不调整布局

Column(){
    ScrollableTabRow(){}
    LazyColumn(modifier = Modifier.nestedScroll(nestedScrollConnection)){}
}

这样既可以满足我的需求,又不会对其他的控件产生影响。

而且之前网上一些教程的描述看的我都迷糊了,什么子布局,父布局,比如这个

其实按我现在的理解,你的nested scroll Connection写在哪一个布局上,这些方法就控制哪一个布局的滚动,比如我的Box上写了Modifier.nestedScroll(nestedScrollConnection),那这个connection的一系列方法就控制这个Box的滚动,onPreScroll就是在手指滑动的时候先截获你的动作,截取多少你能用代码控制,剩下的滑动才用来滚动Box,onPostScroll我还没用过,我猜想是等Box滚动到边界滚不动了才会调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值