EditText关于账号密码输入时如何优雅的借用enter键

最近项目中登录注册时加了个小小的需求,输入账号时可以点击换行符,自动跳转到输入密码处,省去了点击密码的操作。下面上个图来点精神。

第一步:弹出页面时账号获取到焦点,弹出软键盘。
  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();

结尾:再次记录一下希望这些细节对有需要的同学提供一下帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值