一、此功能描述
在輸入資訊時,在EditText控件輸入Enter鍵,常常不是換行而是讓光标直接跳轉到下一個編輯框。該功能主要用到了文本監聽器接口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));