參考:http://m.itdecent.cn/p/9ae164fd0b47
參考:https://blog.csdn.net/fei20121106/article/details/78914928
/**
* 列表內(nèi)使用九宮格,九宮格內(nèi)空白區(qū)域點擊
*/
public class RecyclerMarginClickHelper {
? ? public static? void setOnMarginClickListener(final RecyclerView recyclerView, final View.OnClickListener onClickListener){
? ? ? ? if(recyclerView == null || onClickListener == null){
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? final GestureDetector gestureDetector = new GestureDetector(recyclerView.getContext(), new GestureDetector.OnGestureListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onDown(MotionEvent e) {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onShowPress(MotionEvent e) {
}
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onSingleTapUp(MotionEvent e) {
? ? ? ? ? ? ? ? if(onClickListener != null){
? ? ? ? ? ? ? ? ? ? onClickListener.onClick(recyclerView);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onLongPress(MotionEvent e) {
}
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? });;
? ? ? ? recyclerView.setOnTouchListener(new View.OnTouchListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onTouch(View view, MotionEvent motionEvent) {
? ? ? ? ? ? ? ? //發(fā)現(xiàn)只有點擊了空白處,v是自身recyclerView
? ? ? ? ? ? ? ? if (view instanceof RecyclerView){
? ? ? ? ? ? ? ? ? ? return? gestureDetector.onTouchEvent(motionEvent);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? });
? ? }
}