スクロールバーなし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);
}
}