Android EditText 输入回车符自动跳转至下一个Ed

2018-02-09  本文已影响107人  Ian888

一、此功能描述

在输入信息时,在EditText控件输入回车键,常常不是换行而是让光标直接跳转到下一个编辑框。该功能主要用到了文本监听器接口TextWatcher,主要监听用户是否输入回车符,如果监听到已输入回车符,就自动将焦点移动到下一个控件,从而实现回车符自动跳转的需求。

二、功能代码

public class JumpTextUtil implements TextWatcher {
    private EditText mThisView = null;
    private View mNextView = null;

    public JumpTextUtil(EditText mThisView, View mNextView) {
        super();
        this.mThisView = mThisView;
        if (mNextView!=null) {
            this.mNextView = mNextView;
        }
    }
//beforeTextChanged:文本改变之前触发
//onTextChanged:文本改变过程中触发
//afterTextChanged:文本改变之后触发
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable editable) {
        String str = editable.toString();
        if (str.contains("\r")||str.contains("\n")){
            mThisView.setText(str.replace("\r","").replace("\n",""));
            if (mNextView!=null){
                mNextView.requestFocus();
                if (mNextView instanceof EditText){
               // instanceof 是判断其左边对象是否为其右边类的实例
                    EditText et = (EditText) mNextView;
                    et.setSelection(et.getText().length());
                }
            }
        }

    }
}

三、调用方法

//声明EditText的变量username
EditText username;
//给变量username赋值
username =  findViewById(R.id.et_login_username);
//调用EditText的addTextChangedListener方法,文本监听。
username.addTextChangedListener(new JumpTextUtil(username,password));
上一篇 下一篇

猜你喜欢

热点阅读