Android View位置跳动问题

Android View位置跳动问题

  1. 有时我们会遇到当页面刷新后,类似NestedScrollView和RecyclerView这种可滑动View的滚动位置会变化一下,和原先不一致

  2. 通过调试我们发现,是因为页面里有RecyclerView这种可以获取焦点的View,跟踪代码得知,当这种View的一些flag属性变化时:如Visibility、focusable、enable等,会尝试去requestFocus(),此时外部可滚动View,得知其child获取了焦点,于是就尝试滚动到该child的位置(有时也滚动不到,因为计算offset出错),所以会造成位置的滚动

  3. 最简单的改动就是将RecyclerView的获取焦点功能去掉即可,但是这里也有个坑,RecyclerView在构造函数里面,会默认调用setFocusableInTouchMode(true),所以我们不能在xml中配置这些属性,需要在构造函数里面调用才行

  4. 其他滚动View的跳动情况,也可以参考一下这种情况

    init {
         
      recyclerView = findViewById(R.id
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值