跳转至

侧滑

示例代码

Model实现接口ItemSwipe即可开启拖拽功能

data class SwipeModel(override var itemOrientationSwipe: Int = ItemOrientation.ALL) : ItemSwipe

侧滑方向

该类包含侧滑可配置的方向

ItemOrientation 描述
ALL 全部方向
VERTICAL 垂直方向
HORIZONTAL 水平方向
LEFT 向左
RIGHT 向右
UP 向上
DOWN 向下
NONE 禁用

自定义侧滑

通过赋值itemTouchHelper实现自己的手势

rv.linear().setup {
  addType<SwipeModel>(R.layout.item)

  itemTouchHelper = ItemTouchHelper(object : DefaultItemTouchCallback(this) {
    // 这里可以重写函数
    override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
        super.onSwiped(viewHolder, direction)
        // 这是侧滑删除后回调, 这里可以同步服务器

        Log.d("位置", "layoutPosition = ${viewHolder.layoutPosition}")
        Log.d("数据", "SwipeModel = ${(viewHolder as BindingAdapter.BindingViewHolder).getModel<SwipeModel>()}")
    }
  })

}.models = data

通过给view打上tag标签 swipe 可以自定义侧滑将会移动的视图. 这样就可以展示背景后的视图

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:orientation="horizontal"
        android:tag="swipe"/>

侧滑按钮

请自定义View实现, 或使用以下三方库

SwipeDelMenuLayout

侧滑按钮交互属于iOS风格, Android存在全屏手势冲突, 并不推荐