今天做了一个girdview,要求长按item出现删除按钮,点击空白处取消,长按出现按钮可以,但是点击空白处有问题,如果点击到书籍的空白处 可以用适配器的布局点击事件处理,但是空白区域不是item,不能使用setonitemclick事件解决,而且gridview也不允许直接设置 onclick事件,因此只有重写gridview的touch事件才可以,以下是别人的代码,稍加修改后完成的

自定义gridview

package com.issmobile.numlibrary.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.GridView;

/**
 * 自定义GridView
 */
public class CustomGridView extends GridView {

private float mTouchX;
    private float mTouchY;
    private OnTouchBlankPositionListener mTouchBlankPosListener;

public CustomGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

public CustomGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

public CustomGridView(Context context) {
        super(context);
    }

@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();
            final int motionPosition = pointToPosition((int) x, (int) y);
            if (motionPosition == INVALID_POSITION) {
                switch (action) {
                case MotionEvent.ACTION_DOWN:
                    mTouchX = x;
                    mTouchY = y;
                    mTouchBlankPosListener.onTouchBlank(event);
                    break;
                case MotionEvent.ACTION_MOVE:
                    if (Math.abs(mTouchX - x) > 10
                            || Math.abs(mTouchY - y) > 10) {
                        mTouchBlankPosListener.onTouchBlank(event);
                    }
                    break;
                case MotionEvent.ACTION_UP:
                    mTouchX = 0;
                    mTouchY = 0;
                    mTouchBlankPosListener.onTouchBlank(event);
                    break;
                }
            }
        }
        return super.onTouchEvent(event);
    }

/**
     * 设置GridView的空白区域的触摸事件
     * 
     * @param listener
     */
    public void setOnTouchBlankPositionListener(
            OnTouchBlankPositionListener listener) {
        mTouchBlankPosListener = listener;
    }

public interface OnTouchBlankPositionListener {
        void onTouchBlank(MotionEvent event);
    }

}

本文转自 一点点征服   博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/5819164.html,如需转载请自行联系原作者

实现gridview空白处的点击事件相关推荐

  1. 遍历指定目录下的图片文件 显示在gridview 并添加点击事件

    先上图: gridview布局 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns: ...

  2. 程序猿媛:滑动翻页+区域点击事件

    Android GridView 滑动翻页+区域点击事件 如有转载,请保留原文地址:"http://www.cnblogs.com/LuoYer/p/3409988.html",谢 ...

  3. 程序猿媛一:Android滑动翻页+区域点击事件

    2019独角兽企业重金招聘Python工程师标准>>> 滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段. ...

  4. 从源码角度入手实现RecyclerView的Item点击事件

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6758373.html RecyclerView 作为 ListView 和 GridView 的替代产物, ...

  5. click事件在什么时候出发_剖析setTimeout和click点击事件的触发顺序

    下面是一段非常简单的JavaScript代码 dianji setTimeout(function () { alert('timer handler') }, 2000) function test ...

  6. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题

    开发中很常见的一个问题,项目中的lListview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现 ...

  7. listview 模仿用户点击事件。

    正确的方法 gvFlow.post(new Runnable() {@Overridepublic void run() {gvFlow.performItemClick(gvFlow.getChil ...

  8. Android开发笔记(四十三)点击事件

    按钮点击 常用按钮点击 1.单击事件,主要用于Button和ImageButton控件,布局视图与TextView.ImageView控件用的也比较多.相关类名与方法说明如下: 监听器类名 : Vie ...

  9. android 表格控件点击事件,Android零基础入门|RecyclerView点击事件处理

    原标题:Android零基础入门|RecyclerView点击事件处理 前面两期学习了RecyclerView的简单使用,并为其item添加了分割线.在实际运用中,无论是List还是Grid效果,基本 ...

最新文章

  1. C语言编译全过程剖析
  2. oc58--Category注意事项
  3. CentOs7 无可用“Chinese Support“
  4. 【TCP/IP详解 卷一:协议】第十八章 TCP连接 的建立与终止 (2)其余内容
  5. vue中router-link绑定click失效
  6. 服务器高并发下出现大量的time wait的解决办法
  7. android中自定义的dialog中的EditText无法弹出输入法解决方案
  8. Python + Selenium 自动发布文章(一):开源中国
  9. linux kernel map
  10. 【arp】关于arp和arping命令的使用
  11. Golang 标准库 tips之waitgroup详解
  12. 书摘—松下幸之助全传
  13. Ch8 电路噪声学习笔记(一)baker 《CMOS Circuit Design, Layout, and Simulation》
  14. 基于MODBUS通讯协议的酒厂温湿度、光照度数据采集系统的设计与实现
  15. 重装系统Win7步骤和详细教程
  16. 用HTML+CSS做一个漂亮简单大学生校园班级网页(web前端期末大作业)
  17. 头歌 Linux 远程联机服务(二)- Rsh服务器
  18. 10电脑睡眠后自动关机怎么回事 win_Win10睡眠失效变成关机怎么办_win10睡眠变成自动关机的修复步骤-win7之家...
  19. vue 图片放大、缩小、旋转、滚轮操作图片放大缩小
  20. 【Cartographer参数详解,调参,降低计算量调优笔记记录】

热门文章

  1. solr dih mysql 注意事项
  2. delphi--csv,txt文本转换成excel .
  3. JavaScript常用开发框架总结
  4. JMETER分布式部署注意事项
  5. 如何做好Web 安全测试
  6. php 错误500排错,如何排查Web服务器HTTP ERROR 500的错误?
  7. python3没有decode_我如何在Python3中使用.decode('string-escape')?
  8. 文思海辉值得去吗_文思海辉与全球智能自动化领导者Blue Prism结盟!
  9. Python 字符串(二)
  10. 图解HTTP知识框架