Recyclerview not scrolling to end when keyboard opens

前端 未结 10 1390
有刺的猬
有刺的猬 2020-12-04 16:19

I am using recylerview in my application and whenever new element is added to recyclerview, it scrolls to last element by using

recyclerView.scrollToPosition         


        
10条回答
  •  旧巷少年郎
    2020-12-04 17:01

    It works properly in support library version 27.0.1

    There is nothing to set in the manifest.

    val currentScrollPosition = 0
    
    recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
    
                currentScrollPosition = recyclerView.computeVerticalScrollOffset() + recyclerView.computeVerticalScrollExtent()
            }
    
            override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) { }
        })
    
        storyList.addOnLayoutChangeListener { view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
            if (bottom < oldBottom) {
                if (currentScrollPosition >= recyclerView.computeVerticalScrollRange()) {
                    recyclerVIew.post {
                        recyclerView.overScrollMode = RecyclerView.OVER_SCROLL_NEVER
                        recyclerView.smoothScrollBy(0, recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollOffset() + recyclerView.computeVerticalScrollExtent())
                    }
                }
            } else {
                recyclerView.overScrollMode = RecyclerView.OVER_SCROLL_ALWAYS
            }
        }
    

提交回复
热议问题