Android:如何将NestedScrollView内的指定视图滚动到屏幕顶部
解决方案
问题根源
你用groupView.bottom作为滚动目标是错误的——这个值是视图底部在父布局中的坐标,而要让视图滚动到屏幕顶部,需要的是视图顶部相对于NestedScrollView内容区域的偏移量。
修正后的基础代码
val scrollTo = groupView.top // 获取视图顶部在父布局的偏移量 nestedSctollView.smoothScrollTo(0, scrollTo)
处理布局未完成的情况
如果是刚动态添加完视图就触发滚动,可能视图还没完成布局,导致获取的top值不准确,这时可以用post延迟到布局完成后执行:
groupView.post { val scrollTo = groupView.top nestedSctollView.smoothScrollTo(0, scrollTo) }
适配padding/状态栏(可选)
如果NestedScrollView有顶部内边距,或者需要避开状态栏,可调整偏移量:
groupView.post { val scrollTo = groupView.top - nestedSctollView.paddingTop nestedSctollView.smoothScrollTo(0, scrollTo) }
内容的提问来源于stack exchange,提问作者Malo
相关产品推荐
相关产品推荐

