[android] setOnTouchEvent 设置返回值为true 和 false的区别
今天在做自定义的可选文本的 TextView 类时,用到了 View 类的 setOnTouchListener(OnTouchListener l)事件监听,在构造 OnTouchListener 对象时需要重写 onTouch(...)方法,这个方法的返回值是布尔类型,
刚开始我按默认给定的返回值 false运行,发现只能监听到这个 view 的“按下”事件,“移动”和“抬起”都不能够监听到;于是把返回值改为了 true,就都监听到了。
但是随后又遇到了一个问题,那就是:点击其他组件后,再点击这个 view 的时候获取不到焦点!也就是click事件不响应了。我猜想一定是受到了 onTouch 方法的影响,查资料发现:
设为true 和 false的效果是有区别的:
setOnTouchListener 单独使用的时候返回值需要为true,这样才能保证移动的时候能后获取相应的监
听,而非一次监听(即每次只有一个按下的事件)
setOnTouchListener 和 setOnClickListener 同时使用时,onTouch 的返回值要设为 false,这样既可
以保证按下移动抬起事件可以被监听,并且点击事件也会被监听。
于是,我又对这个 view 设置了setOnClickListener(虽然重写的方法体中什么也没写),并将onTouch 的返回值要设为 了false,结果就 既监听到了Touch 也能监听到 click 事件了,可以重获焦点了!
-----------------------------------------------------------------------------------------------
tv.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
...
break;
case MotionEvent.ACTION_MOVE:
...
break;
case MotionEvent.ACTION_UP:
...
break;
}
return false; // (或return true)
}
});
[android] setOnTouchEvent 设置返回值为true 和 false的区别的更多相关文章
- fileUpload1.HasFile的返回值永远都是false的问题处理
在aspnet项目中,如果有页面使用了fileupload,不巧你也在此页面使用了updatepanel局部刷新控件,那马就会出现一个很奇怪的问题:就是不管你选择文件了没有,fileUpload1.H ...
- vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示
vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示 https://cn.vuejs.org/v2/guide/class-and-sty ...
- ***php解析JSON二维数组字符串(json_decode函数第二个参数True和False的区别)
客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...
- jquery 中cache为true与false 的区别
$.ajax({type: "get",cache: false,url: url,success: function (msg) { }}); cache为true与false ...
- android 16 带返回值的activity
main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...
- Android checkCallingPermission()方法返回值问题
Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回tr ...
- mock获取入参数并动态设置返回值
/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of ...
- android 动态设置TextView值,例:金额添加
一说到动态递增设置TextView值,非常多人应该立即就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值可是效率不 ...
- android 动态设置TextView值,例:金额增加
一说到动态递增设置TextView值,很多人应该马上就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值但是效率不咋 ...
随机推荐
- Excel 读写操作
读 import xlrd from xlrd.book import Book from xlrd.sheet import Sheet from xlrd.sheet import Cell wo ...
- Android 如何快速生成aar?
aar主要分为两步 第一步 新建一个Module类似于Eclipse中的project 然后AddLibrary然后点击Finish完成 生成mylibrary-debug.aar文件 然后将.aar ...
- ng $http 和远程服务器通信的一个服务。
$http({url:'',method:''}).success().error() 简洁写法:$http.get()$http.post()... 注意事项:①要求返回的数据格式是json格式②在 ...
- string manipulation in game development-C # in Unity -
◇ string manipulation in game development-C # in Unity - It is about the various string ● defined as ...
- VS2017连接到中国区的Azure
1. 安装Azure Environment Select扩展 2. 选择中国区的Azure 3. 之后就可以使用中国区的账号登录了 参考链接:https://docs.azure.cn/zh-cn/ ...
- 原生js面向对象写法
Mouse就是一个类,有自己的成员变量和成员方法,成员方法一定加上prototype,避免js原型的坑. var Mouse = function(id) { this.id = id; this.n ...
- Java类和数据结构中常用的方法
1.Object类里面常用的方法: protected Object clone()创建并返回此对象的一个副本. boolean equals(Object obj)指示其他某个对象是否与此对象“相等 ...
- Tornado输出和响应头
1.输出 再来看看输出`write`,实际上,`write`并没有直接把数据返回给前端,而是先写到缓存区,函数结束之后才会返回到前端,我们验证如下 class FlushHandler(tornado ...
- Sentry的授权模型
首先在jdbc中指定的hive用户是一个linux的用户(必须和一个同名linux用户一一对应):这个用户如果是管理员用户,那么可以进行管理工作:比如创建.删除角色,查看角色和用户绑定情况等等:如果不 ...
- saas服务提供商
这段时间接触了不少行业的东西,这里谈几点肤浅的看法.从市场行情上讲,SaaS风口还在,不过热度明显向大数据.物联网.人工智能.区块链等转移. 做得比较好的有这些SaaS提供商,每个领域的都有那么几家的 ...