Android Scrollview巢狀RecycleView滑動不流暢,卡頓問題
阿新 • • 發佈:2018-12-31
最近在做專案時,需要仿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"
歡迎大家批評指正。