• SettingBar的点击事件拦截


    接下来我们再来看另外一个案例,正如上面界面上显示的两个条目,车辆选择和始发地点选择,他们都有一个共同的特点就是都有共同的标题,内容和右剪头按钮,这种情况下我们都会把它封装成一个组合的自定义View来显示它,我们现在来看一下它的

    效果图:

    用户的需求是这样的: 当用户在点击车辆选择的条目的时候他会跳转到另外一个页面上去,而用户在事发地点上点击请输入的时候是可以输入文字信息的,也就是说有两种需求,一种处于不可编辑状态点击整个条目要进行事件拦截,另外一种处于可编辑状态事件,点击请输入需要弹出软键盘可输入文字,也就是点击的时候不需要拦截可直接传递给子View EditText,很显然我们的自定义设置条目需要一个是否可以编辑的开关,当处于不可编辑的状态的时候,点击的时候拦截该事件,当处于可编辑状态的时候,事件可以继续往下分发。

    关键代码:

    public class SettingBarView extends RelativeLayout {(http://www.amjmh.com)
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
    //当处于不可编辑状态的时候拦截该事件,否则该事件就继续往下分发
    return !isEdit;
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
    //当拦截该事件的时候就把它分发给自己的根View,响应全局的点击事件
    return layoutSettingBar.onTouchEvent(event);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    好了,今天的两个小案例就讲完了,需求很简单,通过这两个案例的实操,我们进一步的加深了android事件分发机制的理解,项目案例的完整代码我已经分享到github上了,使用过程中有任何问题,请在文章下方留言,下一篇我们讲一个更加复杂的案例,来进一步帮助大家理解事件分发机制在实战开发当中的应用。

  • 相关阅读:
    linux升级node版本
    mysql视图
    mysql全文本搜索
    mysql数据处理函数
    mysql数据分组
    mysql组合查询
    Django添加生产环境配置
    费用保险单,如何失焦时自动补零
    div+css滚动条
    phpadmin导入数据提示文件最大限制的修改方法
  • 原文地址:https://www.cnblogs.com/ly570/p/11369959.html
Copyright © 2020-2023  润新知