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上了,使用过程中有任何问题,请在文章下方留言,下一篇我们讲一个更加复杂的案例,来进一步帮助大家理解事件分发机制在实战开发当中的应用。
最新文章
- 【Python五篇慢慢弹】快速上手学python
- 【Swift】 应用内显示 AppStore 某个应用的详情
- html/css小练习1
- 【管理心得之四十】中文“其他”、英文“other”、日文“その他”..........................................
- C# String.split()用法小结。String.Split 方法 (String[], StringSplitOptions)
- Win10 UAP 标题栏
- 用php做了下冒泡排序
- 文件上传ajaxfileupload.js插件
- JS 学习笔记--4---运算符
- MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query
- 将数据库从普通文件系统迁移到ASM中
- Codeforces round #353div2 C
- 10条PHP编程习惯
- Apache 2.2 到 2.4的不同
- 字符设备驱动[深入]:linux cdev详解
- Tomcat剖析(二):一个简单的Servlet服务器
- JS中有关正则表达式的一些常见应用
- Java中interrupt的使用
- 【译】索引进阶(一):SQL SERVER索引介绍
- spark-sql集合的“条件过滤”,“合并”,“动态类型映射DataFrame”,“存储”