输入框收回bug
一、bug问题描述
界面上只有两个框,用户名和密码,用户名框输入之后可点击done按钮收回,密码框输入后点击done按钮无效
二、已有代码
- 在点击不同的editText时会切换焦点事件
- 重写了onFocusChange方法对editText事件做出setActivated处理
- 用户名的xml中设置了actiondone,密码的xml未设置actiondone
三、问题所在
- 通过切换焦点完成键盘的自动弹出
- 没有做键盘收回的逻辑
- 密码的xml设置actiondone无效
四、解决方案
- 通过为每个EditText设置android:singleLine=”true”,直到最后一个获取焦点后显示为done,点击done实现隐藏
- 设置控件的android:imeOptions=”actionDone”属性,按理说点击done即可收回键盘
- 监听Enter事件,设置控件的OnKeyListener
五、最终解决
- 由于在测试手表上通过修改imeOptions的不同属性在实际的运行UI中并没有显示对应的改变,合理怀疑可能是由于键盘设置的输入不同。
- 采用第三种方式解决
OnKeyListener onkey = new OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { if (i == KeyEvent.KEYCODE_ENTER) { InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()) { imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0); } return true; } return false; } }; loginPwdEt.setOnKeyListener(onkey);