左滑显示更多,或配套listView使用快速实现左滑删除布局
效果图

使用简单粗暴
仓库地址 GitHub - IHoveYou/LeftSlideView: 好用的左滑删除控件,支持左滑布局,支持直接预览
- allprojects {
- repositories {
- ...
- maven { url 'https://jitpack.io' }
- }
- }
- dependencies {
- implementation 'com.github.IHoveYou:LeftSlideView:v1.1'
- }
LeftSlideHorizontalScrollView 为滑动控制View 继承自 HorizontalScrollView
LeftSlideView 控件内包裹2个任意View 左侧View为内容区域,右侧View为左滑显示区域
view 可以为任何类型 也可以是ViewGroup,自由度极高可放置任意布局
效果可直接预览


- <com.example.leftslideview.LeftSlideHorizontalScrollView
- android:scrollbars="none"
- android:id="@+id/leftSlideHorizontalScrollView"
- android:layout_width="match_parent"
- android:fillViewport="true"
- android:layout_height="40dp"
- >
- <com.example.leftslideview.LeftSlideView
- android:id="@+id/leftSlideView"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
- <LinearLayout
- android:paddingHorizontal="15dp"
- android:orientation="vertical"
- android:layout_width="300dp"
- android:layout_height="match_parent">
- <TextView
- android:gravity="center_vertical"
- android:text="23333"
- android:id="@+id/textView"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- LinearLayout>
- <LinearLayout
- android:orientation="vertical"
- android:id="@+id/llLeftSlidButton"
- android:background="@color/teal_700"
- android:layout_width="50dp"
- android:layout_height="match_parent"/>
- com.example.leftslideview.LeftSlideView>
-
- com.example.leftslideview.LeftSlideHorizontalScrollView>
LeftSlideHorizontalScrollView 的API
- /**
- * 触摸回调
- */
- interface MoveClickListener {
- /**
- * 移动中回调
- * @param leftSlideHorizontalScrollView
- * @param moveX x轴移动距离
- */
- fun onMoveClickListener(leftSlideHorizontalScrollView: LeftSlideHorizontalScrollView?, moveX: Int)
- /**
- * 移动结束
- * @param leftSlideHorizontalScrollView
- * @param isRollOut 当前状态 true 展开 false 收起
- */
- fun onUpClickListener(leftSlideHorizontalScrollView: LeftSlideHorizontalScrollView?, isRollOut: Boolean)
- }
- //设置滑动监听
- void setMoveClickListener(MoveClickListener onListener);
- //手动初始化布局 执行关闭无动画
- void initScrollow();
- //手动设置按钮展开状态 true 展开 false关闭
- void setRollOut(boolen isRollOut)
- //获取当前布局显示状态 展开状态 true 展开 false关闭
- boolean getRollOut()
列表布局 左滑展开控制类 LeftSlideUtils
addView 添加需要联动的View 添加在一起的View 同时只能展开一个
LeftSlideHorizontalScrollView 继承 HorizontalScrollView
监听用户手指移动事件 记录用户点击位置,移动方向,放开后移动距离计算得出是否展开
LeftSlideView 继承 ViewGrop
重写onMeasure方法 在方法内计算控件实际可用宽度,将内容布局宽度设置为实际宽度,获取右侧按钮布局宽度 ,实际可用位置+右侧可用宽度 = LeftSlideView实际整体宽度,配合LeftSlideHorizontalScrollView实现左右滑动,通过点击时获取按钮布局宽度计算展开、折叠动画。
重新LeftSlideView的onLayout方法对子控件进行重新布局将内容区域放在左侧显示位,将按钮区域放置于右侧折叠位,具体代码实现可下载代码仓库进行查看学习。