首页 > 代码库 > 模仿QQ左滑删除
模仿QQ左滑删除
需求:
1.左滑删除
2.向左滑动距离超过一半的时候让它自动滑开,向右滑动超过一半的时候自动隐藏
3.一次只允许滑开一个item
还有,根本不需要自定义view来实现,谨防入坑
布局:
<?xml version="1.0" encoding="utf-8"?><HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="100dp" android:scrollbars="none"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal"> <LinearLayout android:id="@+id/browse_record_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:id="@+id/browse_record_image" android:layout_width="128dp" android:layout_height="78dp" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:scaleType="centerCrop" android:src="@drawable/banner_zhibo" /> <TextView android:id="@+id/browse_record_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="15dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/browse_record_image" android:ellipsize="end" android:includeFontPadding="false" android:lineSpacingExtra="0dp" android:lines="2" android:text="空中读书会" android:textColor="@color/c32" android:textSize="15sp" /> </LinearLayout> <TextView android:id="@+id/browse_delete" android:layout_width="65dp" android:layout_height="match_parent" android:background="@color/red" android:gravity="center" android:text="删除" android:textColor="@color/white" android:textSize="16sp" /> </LinearLayout></HorizontalScrollView>
adapter的getview中:
//隐藏删除按钮ViewGroup.LayoutParams params = holder.browse_record_layout.getLayoutParams();int screenW = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth();params.width = screenW;//自动滑开和自动隐藏效果holder.scrollView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: // 手抬起的时候判断滑动距离 int slideDistance = holder.scrollView.getScrollX();// 获取向左滑动的距离,是一个非负数,px int delete = holder.browse_delete.getWidth();// 删除按钮的宽度,单位px // 当滑动距离大于删除按钮宽度的一半时,就自动滑动到最左边,完全显示删除按钮,所谓的最左边就是滑动距离等于删除按钮宽度 // 当滑动距离小于删除按钮宽度的一半时,就隐藏删除按钮,即滑动距离等于0的位置 if (slideDistance >= delete / 2) { holder.scrollView.scrollTo(delete, 0); currentSlideView = holder.scrollView;// 保存当前滑开的item } else { holder.scrollView.scrollTo(0, 0); currentSlideView = null;// 清空 } break; case MotionEvent.ACTION_MOVE: // 滑动的时候判断当前有没有其它滑开的item,有的话就隐藏 if (currentSlideView != holder.scrollView) { autoHide(); } break; default: break; } return true; }});//删除holder.browse_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //删除一条记录 list.remove(position); autoHide(); notifyDataSetChanged(); }});
模仿QQ左滑删除
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。