前言
在做IM的时候当用户点击输入框外的区域应该隐藏 输入法键盘 或者 其他操作区域
先放上一段代码 放在Activity中 所有的EditText外点击都会隐藏键盘
1 |
|
有时候 我们在Activity中添加onTouchEvent方法 然后点击视图 但是就是不触发事件 这是为什么呢 这就要说一下Android的事件机制了
事件机制
Android和事件有关的方法有三个
dispatchTouchEvent接受上级消息onInterceptTouchEvent决策向下级分发还是自身处理onTouchEvent自身处理逻辑
Android的分发逻辑和处理逻辑是相反的
dispatchTouchEvent –>
分发是从父View到子View处理是从子View到父View
同一个View中三个方法的执行顺序
dispatchTouchEvent –> onInterceptTouchEvent –> onTouchEvent
- 1)
dispatchTouchEvent(默认返回值是true)
如果返回值:false
不接受动作序列中的后续事件
- 2)
onInterceptTouchEvent(默认返回值是false)
如果返回值:true
就不再向子View分发 当前View处理
- 3)
onTouchEvent(默认返回值是false)
如果返回值:true
就不再触发父View 的onTouchEvent
示例
假如AView中包含BView BView中包含CView
如果点击CView
如果BView 的 onInterceptTouchEvent 返回true
那么就CView的onTouchEvent就不会触发
会触发BView的onTouchEvent
如果BView的onTouchEvent返回false
那么AView的onTouchEvent也会触发
如果BView的onTouchEvent返回true
那么AView的onTouchEvent就不会触发