首页 > 代码库 > 为GridView添加点击空白地方的响应函数
为GridView添加点击空白地方的响应函数
GridView为我们提供了 OnItemClickListener, 不过有时候我们需要获取用户点击空白区域的事件来做某些操作。
比如类似微信群管理界面里边,在删除成员状态时可以点击空白区域取消当前操作状态。而不巧的是这个很基本的功能
SDK没直接提供,网上也很少能搜到资料,于是我就扩展了一个出来。
首先你使用一个自定义的类,如
public class MyGridView extends GridView ,然后添加以下代码即可
public interface OnTouchBlankPositionListener { /** * * @return 是否要终止事件的路由 */ 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); }
需要注意的两点细节是:
1、处理时onTouchBlankPosition要返回true以终止路由事件的传播
2、要捕捉ACTION_UP事件,如果使用ACTION_DOWN会在实际中出现点击两次的问题,可能是因为
一次触摸会导致多次ACTION_DOWN事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。