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...