關於AdapterView點擊空白處事件

在項目中遇到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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章