一、概述
最近项目中用到了两个RecyclerView嵌套的布局,即RecyclerView的item也是RecyclerView,其中遇到了两个比较典型的问题:1、当item的方向是垂直方向时,父RecyclerView首次加载会出现位移;2、当item的方向是水平方向时,父RecyclerView上下滑动之后,子RecyclerView位置会还原,本文主要解决以上两个问题。我们先来瞄一眼这两个问题的效果图:
可以明显的看到当item的Recyclerview是垂直方向时,打开页面时“title1”不见了;当item的Recyclerview是水平方向时,我们把 Inner Title1-x和 Inner Title2-x滑动一定距离之后,上下滑动父Recyclerview,Inner Title1-x和 Inner Title2-x的位置又还原了。
二、解决
2.1 首先解决垂直嵌套问题,这个比较简单,主要是子Recyclerview抢占焦点导致,我们只需要让其父布局获取焦点即可解决,完整代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingLeft="14dp"
android:paddingRight="14dp"
android:focusableInTouchMode="true"
android:focusable="true"
>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:layout_gravity="center_vertical"
android:layout_marginRight