RecyclerVIew莫名其妙滚动

  • 今天在开发过程中发现,有的手机,RecyclerView在点击跳走到另外页面再返回的时候,会出现莫名其妙的的自动滚动。

  • 现象大概如下:

    • 第一次进入A页面,A中有RecyclerView
    • 点击其中元素,跳转到B页面,彻底遮盖A页面
    • 随后返回A页面,A中的RecyclerView莫名其妙滑动了一段距离。
  • 该问题并非必现的,而且只有第一次进入的时候复现。当时也是让我百思不得其解。

  • 后来在网上找了找,发现了这样一个方案

    /**
     * 禁止RecyclerView抢焦点导致的OverScroll而产生的莫名其妙滚动
     * <p>
     * author : MuXi
     *
     * @date : 2020/3/19 11:09
     * @since
     */
    private void disableRecyclerViewFocusOverScroll() {
        getRecyclerViewParent().setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);//让RecyclerView的父View禁止子View获取焦点
        getRecyclerView().setOverScrollMode(View.OVER_SCROLL_NEVER);//关闭RecyclerView的OverScroll模式
    }
  • 上述代码中的两种方案都能够生效。原因就是RecyclerView在抢占焦点导致
  • 按理说我们常用的App研发中,基本不太需要考虑Focus的情况,所以比较建议各位使用第一种方案
    • 禁止RecyclerView抢占焦点.

 评论