RecyclerView版的swip 菜单:SwipeMenuRecyclerView

jopen 9年前

RecyclerView版的swip 菜单。

使用说明:

添加依赖

dependencies {      compile 'com.tubb.smrv:swipemenu-recyclerview:3.0.2'  }

第一步

使用SwipeMenuLayout来把item的内容视图和swipe菜单视图组合在一起

<?xml version="1.0" encoding="utf-8"?>  <com.tubb.smrv.SwipeMenuLayout      xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="wrap_content">      <!-- item content view, the id must be (smContentView) -->      <include android:id="@id/smContentView" layout="@layout/item_simple_content"/>      <!-- item swipe menu, the id must be (smMenuView) -->      <include android:id="@id/smMenuView" layout="@layout/item_simple_menu"/>  </com.tubb.smrv.SwipeMenuLayout>

第二步

使用我们自定义的RecyclerView

<?xml version="1.0" encoding="utf-8"?>  <android.support.v4.widget.SwipeRefreshLayout      xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context="${relativePackage}.${activityClass}"      android:id="@+id/swipeRefreshLayout">        <com.tubb.smrv.SwipeMenuRecyclerView          android:id="@+id/listView"          android:layout_width="match_parent"          android:layout_height="match_parent" />    </android.support.v4.widget.SwipeRefreshLayout>

更多的细节请查看demo项目。

自定义

你可以开启和关闭swipe功能,在onBindViewHolder方法中设置pen/close Interpolator 。

itemView.setSwipeEnable(swipeEnable);  itemView.setOpenInterpolator(mRecyclerView.getOpenInterpolator());  itemView.setCloseInterpolator(mRecyclerView.getCloseInterpolator());

 anim_duration属性设置swipe动画的时间,默认是500ms。

<?xml version="1.0" encoding="utf-8"?>  <com.tubb.smrv.SwipeMenuLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:swipemenu="http://schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="wrap_content"      swipemenu:anim_duration="300">    </com.tubb.smrv.SwipeMenuLayout>

特点

支持 LinearLayoutManager、GridLayoutManager 和 StaggeredGridLayoutManager 

swipe 的开启和关闭功能

不会拦截item的touch事件 

易扩展,我们知识override了RecyclerView的onInterceptTouchEvent(MotionEvent ev)方法。

项目地址: https://github.com/TUBB/SwipeMenuRecyclerView