最近项目中登录注册时加了个小小的需求,输入账号时可以点击换行符,自动跳转到输入密码处,省去了点击密码的操作。下面上个图来点精神。
第一步:弹出页面时账号获取到焦点,弹出软键盘。
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
第二步:输完账号(不为空)点击换行符,账号光标消失,密码获取到焦点显示光标。
userET.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_DONE || (event != null && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction())){ if(!TextUtils.isEmpty(userET.getText().toString().trim())){ userET.setCursorVisible(false); pwdET.setCursorVisible(true); pwdET.setFocusable(true); pwdET.setFocusableInTouchMode(true); pwdET.requestFocus(); pwdET.findFocus(); } } return true; } });
第三步:输入完密码后如果再次点击账号,需要重新获取到焦点,显示光标。
userET.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { userET.setCursorVisible(true); userET.setFocusable(true); userET.setFocusableInTouchMode(true); userET.requestFocus(); } });
接下来说一下加入这个功能遇到的小坑
1、输入完账号,点击换行密码获取到焦点时容易不显示光标,一定要按顺序全写完这个属性
pwdET.setCursorVisible(true);
pwdET.setFocusable(true);
pwdET.setFocusableInTouchMode(true);
pwdET.requestFocus();
pwdET.findFocus();
结尾:再次记录一下希望这些细节对有需要的同学提供一下帮助!