关于焦点冲突的坑
2016-12-02 15:53
190 查看
当 ListView item 中含有 Edittext 时,存在 Edittext 获取不到焦点的情况,想要达到既能响应 Item 点击事件, 又能响应单独的 editText
解决方案:
在 listView 的 adapter 里
然后重写方法 onTouch 进行焦点选择
PS: 解释一下为什么是使用 OnTouch, 那是因为: 在 Android 中 View 的触摸事件传递中,View 的 OnTouchListener 调用是早于其他事件的,而且返回值 false, 代表目前事件没有被消耗,继续向下传递,不影响后续事件的处理(这里不影响 EditText 其他事件的处理)
That’s over.
解决方案:
在 listView 的 adapter 里
convertView.setOnTouchListener(this);和
holder.editText.setOnTouchListener(this);
然后重写方法 onTouch 进行焦点选择
@Override public boolean onTouch(View v, MotionEvent event) { if (v instanceof EditText) { EditText editText = (EditText) v; editText.setFocusable(true); editText.setFocusableInTouchMode(true); } else { ViewHolder holder = (ViewHolder) v.getTag(); holder.editText.setFocusable(false); holder.editText.setFocusableInTouchMode(false); } return false; }
PS: 解释一下为什么是使用 OnTouch, 那是因为: 在 Android 中 View 的触摸事件传递中,View 的 OnTouchListener 调用是早于其他事件的,而且返回值 false, 代表目前事件没有被消耗,继续向下传递,不影响后续事件的处理(这里不影响 EditText 其他事件的处理)
That’s over.
相关文章推荐
- 解决delphi关于dbgrid和webbrowser的焦点冲突的问题
- 关于word office 失去焦点后无法使用鼠标(冲突)
- 关于cookieless="true"与website.map冲突的一个问题!
- 关于WindowsSP2的冲突解决!!!
- 关于窗体和控件获取与失去输入焦点的事件
- 关于瑞星防火墙与VC冲突的问题
- 关于开发人员的自我意识与设计冲突
- 关于oracle http服务与tomcat端口冲突问题
- 关于TGridDrawState命名冲突解决方法(C++ Builder)
- 关于syGate代理端口冲突问题
- 关于VC操作Excel和运用ADO操作数据库时产生冲突的解决
- 请各位高手看一下.这是一个关于定义冲突的问题.我应该怎么解决.急,忘各位高手指点!
- 关于软件冲突或程序升级bios 的方法
- 关于sql server的纪录修改冲突解决和oracle的for update 的并发锁定测试
- 关于:Update后引发 并发冲突:DeleteCommand 影响 0 个记录 的错误
- 关于非顶级窗体的输入栏控件焦点问题
- 请教大家一上问.关于定义冲突的!
- 关于程序焦点浅谈
- 关于Dreamweaver冲突的CSS规则
- 请教关于javascript为控件添加焦点事件