首页 > 解决方案 > 在内部滚动视图之前滚动外部滚动视图 - Android

问题描述

目标

布局

当用户尝试滚动回收站视图时,外部视图(白色视图)应该向上滚动(或展开)以显示更多回收站视图。


到目前为止我尝试过的

  1. 嵌套滚动视图:我将白色视图放置在嵌套滚动视图中。这导致回收器视图在滚动时获得优先权。所以结果是回收器视图首先滚动到列表的末尾,然后白色视图向上滚动以显示更多回收器视图。我在嵌套滚动视图和嵌套滚动视图的线性布局上尝试了一些设置 isFocusable 和 isFocusableOnTouch。

  2. 滚动回收器视图时转换白色视图的 Y:在这里,我在回收器视图上设置了滚动监听器,当滚动视图时,我也translatedY将白色视图设置为dy. 这几乎达到了我想要的效果。但是,当回收器视图缓慢滚动时,回收器视图中的项目会“出错”(跳转位置不规律)。

这背后的代码:

var yPos = 200

recyclerView.addOnScrollListener(object : OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        yPos -= dy
        if (yPos >= 0)
            whiteView.animate().translationY(yPos).duration = 0
    }
}

在此处输入图像描述

标签: androidandroid-recyclerviewandroid-scrollviewandroid-nestedscrollview

解决方案


我认为更好的方法是使用 CoordinatorLayout,在这里您可以看到示例:https ://blog.mindorks.com/using-coordinator-layout-in-android


推荐阅读