要实现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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。