最近做項目的時候需要使用ScrollView嵌套RecyclerView,使用過程中出現了一個問題,在Android6.0以上的手機上面會出現當RecyclerView裏面的數據超過屏幕的時候,RecyclerView的高度會被強制設置爲不超過屏幕的底部,也就會導致多出來的數據並不會展示出來,而是需要去滑動RecyclerView展示多出來的數據,注意這裏滑動的是RecyclerView,並不是ScrollView。也就是說RecyclerView的滑動事件和ScrollView的滑動事件是互不相關的,會造成滑動衝突從而導致滑動非常卡頓。
在網上面找到很多方法,其中一種是重寫LinearLayoutManager的cancanScrollVertical()方法,試了一下,滑動確實不卡頓了(因爲禁止了RecyclerView的滑動事件,不會產生衝突),但是數據卻仍然顯示不全。
還有一種方法是設置RecyclerView的nestedScrollingEnabled="false",這種方法跟上面的效果一樣,還是不能解決數據顯示不全的問題。
最後說一下本人親測可用的兩種方法:
方法1:在XML佈局文件中給RecyclerView外面包一層RelativeLayout,並給RecyclerView添加屬性android:nestedScrollingEnabled="false",代碼如下
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
</RelativeLayout>
方法二:使用android.support.v4.widget.NestedScrollView代替ScrollView,並給RecyclerView添加屬性android:nestedScrollingEnabled="false"
最後運行項目,大功告成!!!