实现gridview空白处的点击事件
今天做了一个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);
}
}
实现gridview空白处的点击事件的更多相关文章
- GridView的点击事件冲突解决
在开发的时候,常常可能遇到ListView或GridView控件点击事件与Item点击事件冲突的问题.原因是Item布局中的button或ImageButton强制获取了item的焦点,解决方案之中的 ...
- ListView中嵌套GridView点击事件
做一个项目时,需要在ListView中嵌套GridView,因为ListView的每个条目中不一定出现GridView,那么问题来了,添加GridView的Item的点击事件后,有GridView出现 ...
- recyclerview嵌套GridView去屏蔽后者的点击事件,而是前者响应到事件。
无论是标题中的嵌套方式,还是其它列表控件之间的嵌套,都适用. 1.在GirdView的所在布局的根布局中设置改属性: android:descendantFocusability="blac ...
- asp.net gridview 如何实现行点击事件
第一步:绑定行点击事件 protected void GV_DATA_RowDataBound( object sender, GridViewRowEventArgs e ) { if( e.Row ...
- listview 模仿用户点击事件。
正确的方法 gvFlow.post(new Runnable() { @Override public void run() { gvFlow.performItemClick(gvFlow.getC ...
- Android简单的ListViewDemo及每个控件的点击事件
ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...
- 解决label点击事件触发两次问题
问题描述: 通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项.代码如下: <label> <input type="radio" name=& ...
- Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案
为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view; import android.content.Context; ...
- C# GridView Edit & Delete, 点击Delete的时候弹出确认框
1. 使用GridView自带属性ShowEditButton和ShowDeleteButton,均设为True <Columns> ... <asp:CommandField S ...
随机推荐
- Large-file-chunk-size 设置最大文件上传值
Large-file-chunk-size: Stsadm property (Office SharePoint Server) SharePoint 2007 0 out of 1 rated ...
- iOS 7 与 Xamarin - MultiPeer Connectivity(转载)
随着时代的改变,移动设备在生活工作都开始取代原有的pc.设备间的数据交互就成为了必备可少的功能.比较成熟的产品有NFC.这个啪啪的操作很流行,例如分享图片,分享文件等 .但是在iOS设备中还没有NFC ...
- XML解析之DOM详解及与SAX解析方法的比较
XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...
- Android 中BaseActivty
Base接口 IBaseActivity package liu.basedemo.base; /** * 基类接口 * Created by 刘楠 on 2016/7/28 0028.23:05 * ...
- [MySQL Reference Manual] 7 备份和恢复
7. 备份和恢复 本章主要会介绍: 1.备份的类型:逻辑备份,物理备份,全备和增量4种 2.创建备份的方法 3.还原方法,包括还原到时间点 4.备份计划,压缩和加密 5.表维护,恢复损坏的表 7. 备 ...
- 编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能
package com.hanqi.test; //银行账号 public class account { private String zhanghao;//账号 //私有余额 private do ...
- java web 开发 购物车功能的实现
为了方便自己以后复习,所以写的比较仔细,记录下自己的成长..... 既然是做购物车,那么前提条件是首先需要一系列商品,也就是要建一个实体,这里建了一个商品表. 通过查询在浏览器上显示 基本显示已经做好 ...
- MySQL 中隔离级别 RC 与 RR 的区别
1. 数据库事务ACID特性 数据库事务的4个特性: 原子性(Atomic): 事务中的多个操作,不可分割,要么都成功,要么都失败: All or Nothing. 一致性(Consistency): ...
- x01.os.6: 8086 指令
M:存储器A:累加器R:寄存器SEGR:段寄存器IMM:立即数X:标志位状态依运算或操作结果而定U:相应标志位未定义-:不影响 数据传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义 MOV ...
- C++ 笔记(一) —— 尽量以 const、enum、inline 替换 #define
ilocker:关注 Android 安全(新手) QQ: 2597294287 #define ASPECT_RATIO 1.653 记号 ASPECT_RATIO 不会进入 symbol tabl ...