public class XGridView extends GridView {
private GestureDetector gestureDetector;
public XGridView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public XGridView(Context context) {
super(context);
init(context);
}
public XGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
gestureDetector = new GestureDetector(context,new MSimpleOnGestureListener());
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (mTouchBlankPosListener != null) {
if (!isEnabled()) {
return isClickable() || isLongClickable();
}
int action = event.getActionMasked();
float x = event.getX();
float y = event.getY();
int motionPosition = pointToPosition((int) x, (int) y);
if (motionPosition == INVALID_POSITION) {
gestureDetector.onTouchEvent(event);
}
}
return super.onTouchEvent(event);
}
private OnTouchBlankPositionListener mTouchBlankPosListener;
/**
* 设置GridView的空白区域的触摸事件
*
* @param listener
*/
public void setOnTouchBlankPositionListener(
OnTouchBlankPositionListener listener) {
mTouchBlankPosListener = listener;
}
public interface OnTouchBlankPositionListener {
void onTouchBlank(MotionEvent event);
}
public class MSimpleOnGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapUp(MotionEvent e) {
mTouchBlankPosListener.onTouchBlank(e);
return super.onSingleTapUp(e);
}
}
}
获取GridView点击空白处事件
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一般点击事件大家首先都想到用重写touch函数来实现,一般在viewController中实现这个方法,点击背景时...
- #pragma mark --收起键盘 -(void)viewDidLoad { self.view.userIn...