Android 焦点小结
来源:互联网 发布:nginx 访问根目录 编辑:程序博客网 时间:2024/05/29 17:41
1.Focusable 和 FocusableInTouchMode
FocusableInTouchMode
推荐《Android touch mode和focusableInTouchMode分析》,这篇讲的很好,感谢大神!
需要注意的是FocusableInTouchMode的使用,例如一个简单的页面三个按钮,前两个设置FocusableInTouchMode=true,最后一个什么都不设置(FocusableInTouchMode默认为false),这时候监听它们各自的onTouch事件和onClick事件。
程序启动后会发现第一个按钮高亮了,点击第一个按钮发现响应了down,up,click;这时候点击第二个会发现只是响应了down和up,并没有相应click,不过第二个按钮高亮了。然后再次点击第二个按钮才会响应down,up,click。最后点击第三个按钮发现响应了down,up,click,但是没有高亮。
原因是当一个View设置了FocusableInTouchMode=true时,第一次点击它,它会尝试获取焦点,如果获取成功就会高亮显示但不会触发onClick事件,只有在第二次点击时才会触发onClick事件。
Focusable设置是否可以获取焦点,一个比较经典的就是ListView中有一个Button,如果没有设置Button的Focusable的话,按钮点击事件能够响应,但是ListView的ItemClick无法响应,这时候将Button的Focusable设为false,ItemClick就能够响应了。
2.ListView无法响应点击事件
一个页面比较复杂,ScrollView嵌套各种ViewGroup,并且还有ListView等,有的时候ListView的ItemClick事件无法响应,监听ListView的onTouch事件了发现每个Item都响应了down和up,并且Item中的都设置了Focusable=false。
这时候可能是ListView的焦点丢失了,在ListView的onTouch的down事件中手动获取焦点即可。
3.在ScrollView中,当某一个View获取了焦点(一般是焦点改变),ScrollView会自动滚动到该View置顶的位置,一种解决方法是重写ScrollView的方法
@overrideprotected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) { return 0;}
- Android 焦点小结
- android焦点
- 【Android】EditText获得焦点以及失去焦点
- Android EditText获取焦点失去焦点监听
- android控件获取焦点
- android 空间获取焦点
- android 焦点问题
- Android音频焦点
- android焦点问题
- android 焦点问题
- android 焦点事件
- android 焦点控制
- android焦点问题
- android textview 获得焦点
- [Android]ListView焦点圈套
- android editText 获取焦点
- android ListView 焦点问题
- android 中 焦点控制
- Linux 脚本编写基础
- class类文件结构
- Android捕获崩溃异常
- Cygwin下面,apt-cyg的使用方法和基本原理
- 软件测试实习0624-testNG组测试
- Android 焦点小结
- Android --- 读取系统资源 getResources
- 百度地图代码学习
- 转载:void与void*详解
- window7安装python的xgboost库方法
- PoE供电、集中供电、点对点供电各自的优缺点
- 3.0、Android Studio构建和运行应用
- django 模型完整实例
- yield,generator type