检查 NestedScrollView 是不是可滚动

Posted

技术标签:

【中文标题】检查 NestedScrollView 是不是可滚动【英文标题】:Check if NestedScrollView is Scrollable检查 NestedScrollView 是否可滚动 【发布时间】:2019-11-29 16:51:54 【问题描述】:

如果我的屏幕可在 NestedScrollView 内滚动,我需要一个返回布尔值的函数。我目前在 NestedScrollView 中有一个 RecyclerView,并且 RecyclerView 的内容是动态的(我可以添加或删除项目)。每次我滑动删除我想调用检查 NestedScrollView 是否可滚动的函数。我目前正在使用这个功能:

fun isRecyclerScrollable(binding: FragmentToBuyBinding): Boolean 
    val e = requireActivity().findViewById<NestedScrollView>(R.id.nested)
    return e.canScrollVertically(1) || e.canScrollVertically(-1)

这可行,但有一个缺陷。在删除我的 RecyclerView 中使屏幕不可滚动的最后一个内容后,该函数仍然返回 true。但是,在那之后,我执行的每次删除,它都会返回 false。但这不好,我需要它在我的屏幕不可滚动时返回 false。你能帮忙吗?

【问题讨论】:

可以添加滑动删除功能吗 协程完成后调用 isScrollable 函数。它位于 Observable livedata 中,而不是 swipe 函数中。你能帮忙吗? 请告知知道 NestedScrollView 可滚动的目的是什么?听起来很混乱。 隐藏/显示某个视图。我只需要知道是否有比我上面的功能更好的方法来执行这种类型的功能。谢谢 【参考方案1】:

我认为您应该能够根据您的需要调整此答案check if an android scrollview can scroll(通过将 ScrollView 替换为 NestedScrollView)。当然,这只有在视图被渲染后才有效。

【讨论】:

谢谢,我应该在哪里称呼它? (由于在 onCreate 中,getHeight() 将返回 0) 我建议调用它,例如,在您的 RecyclerView 更改发生后(例如,项目删除或添加) 我知道是什么导致了问题。它第一次返回true,因为此函数在recyclerview 的视图被清除之前运行。有没有办法在recyclerview的视图被清除后运行这个函数?

以上是关于检查 NestedScrollView 是不是可滚动的主要内容,如果未能解决你的问题,请参考以下文章

Android之解决NestedScrollView嵌套RecyclerView部分手机返回到这个页面Recyclerview顶部,而不是页面NestedScrollView顶部

Android之解决NestedScrollView嵌套RecyclerView部分手机返回到这个页面Recyclerview顶部,而不是页面NestedScrollView顶部

RecyclerView Laggy 在 NestedScrollView/LinearLayout

无法滚动到 NestedScrollView 内的 RecyclerView 中的项目

NestedScrollView 修复 NestedScrollView 内部的视图顶部

当在nestedscrollview的recyclerview中将项目拖出可见空间时-nestedscrollView不滚动