父布局内容状态改变,RecyclerView会自动滚动的问题

问题遇到场景

RecyclerView列表中点击评论或回复使输入框定位到指定位置,当隐藏输入框后RecyclerView会自动滚动

问题查找思路

断点 RecyclerView中的smoothScrollBy方法,查看触发smoothScrollBy的源头,经过断点查看调用栈发现requestChildFocus方法触发,requestChildFocus的愿意见名思意就是RecyclerView中的ChildView在获取焦点,ChildView获取焦点后会对自身定位进行展示从而触发smoothScrollBy方法

解决方法

问题的源头找到了,既然是RecyclerView中的ChildView在自动请求焦点,那么解决的办法就是不让它去自动获取焦点。在RecyclerView中添加android:descendantFocusability="blocksDescendants"属性来阻止RecyclerView中ChildView自动获取焦点。

 

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

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

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

 

好了,问题解决了,解决问题最有效和最快速的方法还是从源码去定位问题,主要的是耐心+冷静分析!!!

​​​​​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值