关于 NestedScrollView 嵌套 RecyclerView 页面载入时总是滑动到最底部

看标题是不是不太明白,来两张图片:
在这里插入图片描述 在这里插入图片描述
正常情况下,我们期待的是进入页面以后显示左图效果,可是由于NestedScrollView嵌套RecyclerView,导致Recyclerview占据焦点导致整个NestedScrollView内容上滑。知道原因以后解决这个 bug 就容易多了。
 

当在Fragment使用NestedScrollView嵌套RecyclerView时,来回切换Fragment时会发现NestedScrollView会自动向上滚动一段距离;
 

我第一反应就是有布局抢焦点了,有时候如果有EditText也会有类似的现象,解决办法就是在NestedScrollView里的唯一布局设置自动获取焦点,代码如下:

方法一:

在根布局设置android:descendantFocusability=”blocksDescendants” ;

android:descendantFocusability 有三种值:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
方法二:

对于有Editext的页面需要在根布局使用 :

android:focusable="true"
android:focusableInTouchMode="true"
方法三:

在NestedScrollView顶部第一个控件使用 :

android:focusable="true"
android:focusableInTouchMode="true" 

这种方法我觉得有点不太可靠,因为有时候是可行的,有时候是不行的。。。。

代码示例:
<androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#EEEEEE">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:focusable="true"//关键
                android:focusableInTouchMode="true"//关键
                android:orientation="vertical">
             </LinearLayout>
 </androidx.core.widget.NestedScrollView>

参考:关于NestedScrollView嵌套RecyclerView页面载入时总是滑动到最底部

   NestedScrollView嵌套RecyclerView时自动滚动一段距离,顶部显示不全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值