今天在做自定义的可选文本的 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的区别的更多相关文章

  1. fileUpload1.HasFile的返回值永远都是false的问题处理

    在aspnet项目中,如果有页面使用了fileupload,不巧你也在此页面使用了updatepanel局部刷新控件,那马就会出现一个很奇怪的问题:就是不管你选择文件了没有,fileUpload1.H ...

  2. vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示

    vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示 https://cn.vuejs.org/v2/guide/class-and-sty ...

  3. ***php解析JSON二维数组字符串(json_decode函数第二个参数True和False的区别)

    客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...

  4. jquery 中cache为true与false 的区别

    $.ajax({type: "get",cache: false,url: url,success: function (msg) { }}); cache为true与false ...

  5. android 16 带返回值的activity

    main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...

  6. Android checkCallingPermission()方法返回值问题

    Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回tr ...

  7. mock获取入参数并动态设置返回值

    /*   * Copyright (c) 2007 Mockito contributors   * This program is made available under the terms of ...

  8. android 动态设置TextView值,例:金额添加

    一说到动态递增设置TextView值,非常多人应该立即就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值可是效率不 ...

  9. android 动态设置TextView值,例:金额增加

    一说到动态递增设置TextView值,很多人应该马上就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值但是效率不咋 ...

随机推荐

  1. sql server显示行号

    --    工具-> --    选项-> --    文本编辑器-> --    所有语言-> --    常规-> --    显示-> --    行号

  2. flowable 6.1.2 命令行完成请假审批流程的例子

    一.创建 eclipse maven新项目 1.设置项目选项 其中,Create a simple project 要选中. 2.填写项目包名和项目名称 这里的Group id:必须是 org.flo ...

  3. 用 WEKA 进行数据挖掘 ——第一章:简介

    1.简介数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至算法优化,确实需要很多背景知识.但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西.他们的精力,集中 ...

  4. 2018下C程序设计(上)第0次作业

    1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题: (1)大学和高中最大的不同是什么?请看大学理想的师生关系是?有何感想? 我认为大学和高中最大的不同在于我们(包括老师)对学习的态度.在高中,学生 ...

  5. ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)

     目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...

  6. CodeForces - 622F:The Sum of the k-th Powers (拉格朗日插值法求自然数幂和)

    There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. ...

  7. 拦截器springmvc防止表单重复提交【3】自己实际项目

    1:[定义注解] package com.jspxcms.ext.interceptor; import java.lang.annotation.ElementType; import java.l ...

  8. Intent详解以及实例

    Android中统一用Intent来封装程序的“调用意图“.不管程序想启动一个Activity,一个Servicer,还是一个BroadcastReceiver.使用Intent提供了一个统一的编程模 ...

  9. HTML服务器控件与Web服务器控件

    asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等.这里主要整理一下html控件.html服 ...

  10. 圆方树总结 [uoj30]Tourists

    圆方树总结 所谓圆方树就是把一张图变成一棵树. 怎么变啊qaq 这里盗一张图 简单来说就是给每一个点双新建一个点,然后连向这个点双中的每一个点.特殊的,把两个点互相连通的也视作一个点双. 我们把原来就 ...