RecyclerView中嵌套RecyclerView导致页面会

2018-08-15  本文已影响0人  庞哈哈哈12138

RecyclerView中嵌套RecyclerView或其他可滑动布局抢占焦点的问题的解决办法

下面先看一下问题所导致的现象:

20170812171210726.gif

可以看到,当我们第一次打开app的时候,第一个item是没有完整显示的,给人的感觉是向上有了一段位置的偏移,这个问题就是RecyclerView中嵌套RecyclerView所导致的抢占焦点的问题。

具体的解决办法就是给这个RecyclerView最外层的跟布局加上下面的两个属性:

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

即让最外层的View获取到焦点问题就解决了

下面贴一写这个包含RecyclerView的布局对应的完整代码:

<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black_alpha_16"
    android:orientation="vertical"
    android:focusableInTouchMode="true"
    android:focusable="true"
    tools:context="com.merpyzf.kangyuanmilk.ui.home.HomeFragment">

    <com.yalantis.phoenix.PullToRefreshView
        android:id="@+id/pull_to_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v7.widget.RecyclerView>

    </com.yalantis.phoenix.PullToRefreshView>

</LinearLayout>

问题解决后的运行效果:

20170812172513375.gif

这也是个奇葩问题,多个 recyclerview 相互 不仅会有滑动冲突而且还有焦点抢占问题导致莫名其妙的向上偏移,因此除非逼不得已还是不建议使用recyclerview嵌套来实现需求

上一篇下一篇

猜你喜欢

热点阅读