Android 列表侧滑(删除)菜单
阅读数:259 评论数:0 字数统计:114 阅读时长 ≈ 1分钟under Android tag Published on October 29th , 2020 at 08:55 am
自定义implements GestureDetector.OnGestureListener的类,重写onScroll
在这里有个要注意的地方,就是onDown的返回值,如果你设为false,经测试,它就一直只执行onDown-onShowPress-onLongPress;其他的并不会执行。
如果设为true,则正常。
public class Listener implements GestureDetector.OnGestureListener {
private View view;
private int ux;
private String TAG = "TAG";
public Listener(View view) {
this.view = view;
View layout = view.findViewById(R.id.user_layout);
ux = layout.getLayoutParams().width;
layout.setVisibility(View.VISIBLE);
view.setPadding(0, 0, -ux, 0);
}
@Override
public boolean onDown(MotionEvent motionEvent) {
// 在这里有个要注意的地方,就是onDown的返回值,如果你设为false,经测试,它就一直只执行onDown-onShowPress-onLongPress;其他的并不会执行。
// 如果设为true,则正常。
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
int open = (int) (motionEvent.getX() - motionEvent1.getX());
if (open > ux) {
view.setPadding(-ux, 0, 0, 0);
}
int close = (int) (motionEvent1.getX() - motionEvent.getX());
if (close > ux) {
view.setPadding(0, 0, 0, 0);
}
Log.i(TAG, "onScroll: " + open + "," + close);
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
}
适配器中使用,给convertView设置监听事件。
final GestureDetector detector = new GestureDetector(context, new Listener(convertView));
convertView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return detector.onTouchEvent(event);
}
});
本文由 surface 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
文章最后更新时间为:November 10th , 2020 at 09:00 am
分享到:Twitter Weibo Facebook