一、此功能描述
在输入信息时,在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));