1. 程式人生 > >Android Scrollview巢狀RecycleView滑動不流暢,卡頓問題

Android Scrollview巢狀RecycleView滑動不流暢,卡頓問題

最近在做專案時,需要仿QQ那樣的彈性動畫效果。於是就用ScrollView加RecycleView開始了。

<com.dten.assistant.ui.view.MyScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
android:background="@android:color/white"> <ImageView android:layout_below="@+id/ll_search" android:id="@+id/iv_line" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY"
android:src="@drawable/ic_content_line" android:layout_marginTop="10dp" android:layout_marginLeft="20dp"/> <android.support.v7.widget.RecyclerView android:layout_below="@+id/iv_line" android:id="@+id/rcv_selector_contents"
android:layout_width="match_parent" android:layout_height="match_parent" />

大概佈局就是這樣的,完成之後,發現一個問題,就是在滑動的不流暢,卡頓,基本就是手指移動多長,介面滑動多長距離。於是找資料,在recycleview新增這兩個方法就可以了。

recyclerView.setHasFixedSize(true);
recyclerView.setNestedScrollingEnabled(false);

於是加上之後趕緊試了試,可是不對啊。。。。發現再向下滑動的時候劃不動,這可怎麼辦呢。
原來我的佈局是

<com.dten.assistant.ui.view.MyScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

ScrollView是最外層的,於是在ScrollView外層再包裹一層佈局即可

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F9F9F9">
    <com.dten.assistant.ui.view.MyScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

現在就可以滑動了,而且很流暢,有滑動慣性。

另外:如果Listview或者RecycleView顯示不全,只有一個itme,請在ScrollView中新增

android:fillViewport="true"

在Android 5.0後,滑動到底部或者頂部會有一個月牙形的影印,有些場景可能會有點不好看,去掉這個:

android:overScrollMode= "never"
android:fadingEdge="none"

歡迎大家批評指正。