在項目中遇到GridView在item不滿時,要求點擊空白處也能響應某些事件,發現AdapterView是沒有OnClick事件的;
解決方案是重寫他的onTouch事件,來判斷不是他的item,從而實現空白處點擊事件。
<span style="font-size:18px;"> @Override
public boolean onTouchEvent(MotionEvent ev) {
if (mTouchInvalidPosListener == null) {
return super.onTouchEvent(ev);
}
if (!isEnabled()) {
// A disabled view that is clickable still consumes the touch
// events, it just doesn't respond to them.
return isClickable() || isLongClickable();
}
if (ev.getActionMasked() == MotionEvent.ACTION_UP) {
//判斷當前所在位置是否是他的item位置pos
final int motionPosition = pointToPosition((int) ev.getX(), (int) ev.getY());
if (motionPosition == INVALID_POSITION) {
super.onTouchEvent(ev);
return mTouchInvalidPosListener.clickInvalidPosition(ev.getActionMasked());
}
}
return super.onTouchEvent(ev);
}
/**
* 點擊空白區域的響應事件
*/
public interface OnClickInvalidPositionListener {
boolean clickInvalidPosition(int pos);
}</span>