您好,登錄后才能下訂單哦!
要實現EditText的輸入內容按條件自動格式化,可以使用TextWatcher監聽EditText的輸入變化,根據設定的條件在合適的時機對輸入內容進行格式化。
以下是一個示例代碼,演示如何對用戶輸入的手機號進行自動格式化:
// 創建一個TextWatcher監聽EditText的輸入變化
TextWatcher phoneTextWatcher = new TextWatcher() {
private boolean isFormatting;
private boolean deletingHyphen;
private int hyphenStart;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if (isFormatting) return;
if (after > 0 && s.charAt(start) == '-') {
deletingHyphen = true;
hyphenStart = start;
} else {
deletingHyphen = false;
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (isFormatting) return;
int phoneLength = s.length();
// 如果用戶正在刪除"-",不做任何格式化
if (deletingHyphen) return;
// 格式化手機號,例如:123-456-7890
if (phoneLength == 3 || phoneLength == 7) {
isFormatting = true;
editText.setText(new StringBuilder(s).insert(phoneLength, "-").toString());
editText.setSelection(editText.getText().length());
isFormatting = false;
}
}
@Override
public void afterTextChanged(Editable s) {}
};
// 將TextWatcher設置給EditText
editText.addTextChangedListener(phoneTextWatcher);
在這個示例中,我們在用戶輸入手機號時,根據條件在合適的時機自動加入"-"來格式化手機號。通過TextWatcher可以靈活控制輸入內容的格式化,根據不同的需求實現自動格式化邏輯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。