recyclerView滑动到某一点时自动触发向上滚动的问题

问题描述:

请仔细看gif图 刚开始的地方是Banner自动向上滚动到的位置是一个ViewPager
gif

前言

这种问题用图片真的不好描述,如果有同样的问题 请仔细看gif图说明!

仔细看 当我滑动到每日精选的上面一点点时候 这时recyclerview会触发自动向上滚动。如果没看清楚 请仔细再看一次。

因为不影响任何功能 这个算是小问题 之前项目上线 我也没太在意,但是后来经过客户反应

说这个对用户体验不太好 希望修改!于是,我就开始排查问题:

最初我担心可能是用的第三方框架问题,但是回头一想,项目其他地方也用了同一个第三方控件,也没有问题啊

后来想到 可能是scroll或者smothscroll引起的问题 看了很多博文,也试着调整了代码 但是好像没有效果。

我不甘心啊,遇到了问题。怎么都解决不了,后来无意间看到了一篇关于焦点争夺的问题,引起了我的注意。

于是我查看了API 找到了这样的说明:

android:descendantFocusability Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus. Must be one of the following constant values.
在寻找要聚焦的视图时,定义ViewGroup及其后代之间的关系。
必须是下列常数之一:
这里写图片描述

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

  • beforeDescendants:viewgroup会优先其子类控件而获取到焦点

  • afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

  • blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

根据上面的说明:
我用到的是第三种方法,即在Item布局的根布局加android:descendantFocusability="blocksDescendants"”的属性。
再加上去除RecyclerView滑动边缘阴影效果 设置android:overScrollMode="never"完美解决滚动问题。

XML根布局

<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="blocksDescendants"   <!-- 覆盖子类控件而直接获得焦点 -->
    tools:context="com.jxty.app.garden.main.HomeFragment">

recyclerView布局

<android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerview"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:background="#eeeeee"
            android:overScrollMode="never" /> <!-- 去边缘阴影效果 -->

好了因焦点冲突产生的滑动问题就此解决!~

与君共勉

我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
 snail

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕氏春秋i

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值