スクロールバーなしGridView少量画像表示

4823 ワード

import android.content.Context;

import android.util.AttributeSet;

import android.util.Log;

import android.view.MotionEvent;

import android.widget.GridView;



public class NoScrollGridView extends GridView {



    private static final String TAG = "NoScrollGridView";

    private static final int BLANK_POSITION = -1;

    private OnTouchBlankPositionListener mTouchBlankPosListener;



    public NoScrollGridView(Context context) {

        super(context);

    }



    public NoScrollGridView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }



    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, expandSpec);

    }



    public interface OnTouchBlankPositionListener {

        boolean onTouchBlankPosition();

    }



    public void setOnTouchBlankPositionListener(OnTouchBlankPositionListener listener) {

        mTouchBlankPosListener = listener;

    }



    @Override

    public boolean onTouchEvent(MotionEvent event) {



        if (mTouchBlankPosListener != null) {

            if (!isEnabled()) {

                // A disabled view that is clickable still consumes the touch

                // events, it just doesn't respond to them.

                return isClickable() || isLongClickable();

            }

            if (event.getActionMasked() == MotionEvent.ACTION_UP) {

                final int motionPosition = pointToPosition((int) event.getX(), (int) event.getY());

                if (motionPosition == BLANK_POSITION) {

                    return mTouchBlankPosListener.onTouchBlankPosition();

                }

            }

        }

        return super.onTouchEvent(event);

    }

}