修改前效果:
修改后效果:
布局
拖动Footer的时候是否同时拖动内容(默认true)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:id="@+id/topView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/orange_shape" />
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/sRefresh"
app:srlEnableFooterTranslationContent="false"
app:srlEnableLoadMore="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordLay"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/tabLay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:title="123"
app:titleEnabled="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:id="@+id/oneView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimary" />
<View
android:id="@+id/twoView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimaryDark" />
<View
android:id="@+id/threeView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@android:color/holo_green_dark" />
</LinearLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabContent"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@android:color/holo_purple">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
</com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvList"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
activity通过判断NestedScrollView是否滑动到底部进行设置是否可以上拉加载刷新
scrollView.setOnScrollChangeListener(object : NestedScrollView.OnScrollChangeListener {
override fun onScrollChange(view: NestedScrollView, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) {
if (scrollY == (view.getChildAt(0).measuredHeight - view.measuredHeight)) {
sRefresh.setEnableLoadMore(true)
}else{
sRefresh.setEnableLoadMore(false)
}
}
})
只要不扣!!!就上它舅子
第二种方案把布局中的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:id="@+id/topView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/orange_shape" />
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/sRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableLoadMore="false"
app:srlEnablePreviewInEditMode="false">
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordLay"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/tabLay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:title="123"
app:titleEnabled="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:id="@+id/oneView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimary" />
<View
android:id="@+id/twoView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimaryDark" />
<View
android:id="@+id/threeView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@android:color/holo_green_dark" />
</LinearLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabContent"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@android:color/holo_purple">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="惊喜呀" />
</com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:srlEnableLoadMore="true"
app:srlEnableRefresh="false">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
如果RecyclerView没有现在在第一位在recycle外面在包一层NestedScrollView,每次刷新数据调用
NestedScrollView.scrollTo(0, 0)