使用Android-PullToRefresh这个插件来展示列表
但是想增加左右滑动的手势的识别
目前是这么实现的:
listView = pullToRefreshListView.getRefreshableView(); listView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { eventConsumed = false; gd.onTouchEvent(event);//里面会修改eventConsumed变量 return eventConsumed ? true : false; } });
这么做大致上能够达到效果
但有一个问题,就是有一个item
会处于按下状态
如何才能更好的达到效果呢?
分析
item
会处于按下状态是因为gd.onTouchEvent(event);
在左右滑动时会消化掉MotionEvent.ACTION_UP
归根结底
这个活应该同时借助onInterceptTouchEvent
和onTouchEvent
去完成
onInterceptTouchEvent
如果返回true
就能偷走事件,不往下传给item
但PullToRefreshListView
中把它们设成了final
不许修改
所以得做个小手术,将final
去掉
然后就可以添加自己的手势支持:
onliners = new PullToRefreshListView(this, getAttributeSet4TagFromXml(R.layout.part_onliners, "com.handmark.pulltorefresh.library.PullToRefreshListView")) { @Override public boolean onInterceptTouchEvent(MotionEvent event) { boolean s = super.onInterceptTouchEvent(event); listViewEventConsumed = false; gd.onTouchEvent(event); return listViewEventConsumed ? listViewEventConsumed : s; } @Override public boolean onTouchEvent(MotionEvent event) { boolean s = super.onTouchEvent(event); return listViewEventConsumed ? false : s; } };
这样在左右滑动被截获时事件不会进一步传到item
也就不会出于按下状态。