RecyclerView抢焦点自动滚动

最近有个项目,其中有一个新闻详情页面,在新闻详情下面是一个用户评论列表,最底部有一个评论输入框,有点类似于今日头条的新闻详情页面。评论列表是采用RecyclerView开发的,点击底部评论输入框会弹出软键盘。发现有个比较诡异的现象,当软键盘缩回去的时候,评论列表RecyclerView老是会自动滚动到顶部。这样体验会比较差,有可能我本来在看某条评论信息,点击评论输入后又放弃,这个时候我肯定是希望页面停留在原来那个地方的。

如下2张图所示,RecyclerView的header是一个WebView,用来加载新闻网页信息,其他列表项则是显示评论,点击底部评论弹出一个输入框以及软键盘,当软键盘取消的时候,RecyclerView自动滚动到了header顶部:


img_0f72842e79cc10911dad0d8d09001426.png
原本列表位置
img_70d14dceaf21a09567de38de91f47a38.png
弹出输入法后

通过查看源码以及参考网上别人的分析,原来这就是所谓的RecyclerView抢夺焦点现象。当输入框及软键盘显示出来的时候,整个界面的焦点是在这个输入框EditText上的,但是当取消软键盘的时候,界面焦点发生了变化,RecyclerView抢夺了焦点,进而导致界面自动滚动了。

通过试验,采用以下方法解决了我的问题:
在RecyclerView的父布局上增加“ android:focusable="true" android:focusableInTouchMode="true"”这2个配置。

<RelativeLayout  
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    >
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </android.support.v7.widget.RecyclerView>
</RelativeLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值