博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈Android onClick与onLongClick事件触发的问题
阅读量:7254 次
发布时间:2019-06-29

本文共 917 字,大约阅读时间需要 3 分钟。

      之前做按钮的点击事件一直没有注意一些细节,今天做了一个按钮需要有点击和长点击触发不同效果,直接让Activity implements OnClickListener, OnLongClickListener然后添加了相应的处理函数。

@Override    public void onClick(View v) {        // TODO Auto-generated method stub            }    @Override    public boolean onLongClick(View v) {        // TODO Auto-generated method stub        return false;    }

没多做考虑,直接在函数内添加了我想要的实现。在一次不经意的测试中发现,在我的按钮点击时间中有一个临界值,当我单下按钮的时间等于这个临界值的时候,点击事件和长点击事件会同时触发。点击事件自然是没什么问题,导致这个问题一定是长点击事件出了问题,回过头仔细看长点击事件的方法,发现它和点击事件基本没有区别,唯一的区别就是多了一个返回值。那么这个返回值究竟有什么用呢,查了一下开发文档,对这个方法描述如下:

Public Methods

public abstract boolean onLongClick ( v)

Added in
 

Called when a view has been clicked and held.

Parameters
v The view that was clicked and held.
Returns
  • true if the callback consumed the long click, false otherwise.

 说明了如果返回值为true的话这个点击事件会被长点击独占,否则相反。

 这下就可以理解了为什么之前的点击会同时触发两个点击事件。

将onLongClick的返回值设置为true,即可避免这个问题的发生。

转载于:https://www.cnblogs.com/x-dev/p/3765677.html

你可能感兴趣的文章
ajax
查看>>
POJ 2777 线段树
查看>>
python的十进制与任意进制的转换
查看>>
HTTP协议中GET和POST方法的区别
查看>>
malloc calloc 和 realloc
查看>>
ATL中对IDocHostUIHandler的封装
查看>>
python - work4
查看>>
MaskedTextBox
查看>>
开源许可协议简介
查看>>
localeCompare() 方法实现中文的拼音排序
查看>>
sqlyog练习
查看>>
Android学习笔记26-图片切换控件ImageSwitcher的使用
查看>>
PHPMailer
查看>>
C# 动态类型与动态编译简介
查看>>
配置DNS服务器
查看>>
C# 2.0学习之--条件编译
查看>>
lock(3)——更新锁(U)、排它锁(X)、死锁及如何避免死锁
查看>>
使用SignalR 2 注意事项
查看>>
多进程 (一) — 像线程一样管理进程
查看>>
node+vue报错合辑
查看>>