安卓手機(jī)號碼自動添加空格效果-終極解決方案-親測能用
最近UI對于手機(jī)號輸入框提出了要自動添加空格的需求,沒辦法,產(chǎn)品和UI就是大爺,說了就要做呀。
但是在網(wǎng)上搜了好多資料,說著是能夠?qū)崿F(xiàn),但是大多數(shù)都是無腦的Ctrl+C 和Ctrl+V,根本就沒有實(shí)踐過,就直接復(fù)制粘貼,完全是不負(fù)責(zé)任的。也不知道源頭是誰。
既然咱們踩過坑了,就要為后人修好路。
在此留下這一條平坦大路給各位碼農(nóng)朋友。
EditText et_login_phone = findViewById(R.id.et_login_phone);
et_login_phone.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String phone = s.toString();
//若有輸入框處于編輯狀態(tài)且有數(shù)據(jù)要顯示刪除叉號的需求,可以在此處處理
//clearPhone.setVisibility(phone.length() > 0 ? View.VISIBLE : View.GONE);
//將原始數(shù)據(jù)去空格處理
String value = phone.replace(" ", "");
//添加第三位數(shù)字后面的空格
if (value.length() > 3) {
value = value.substring(0, 3) + " " + value.substring(3, value.length());
}
//添加第7位數(shù)字后面的空格(因?yàn)榈谌粩?shù)字后面有個空格,所以是在字符串第8位后面添加空格)
if (value.length() > 8) {
value = value.substring(0, 8) + " " + value.substring(8, value.length());
}
et_login_phone.removeTextChangedListener(this);//賦值前,需要先將監(jiān)聽移除,不移除,會出現(xiàn)卡死的問題
et_login_phone.setText(value);//將添加空格之后的數(shù)據(jù)進(jìn)行賦值
et_login_phone.addTextChangedListener(this);//賦值后,將監(jiān)聽添加到控件上
//輸入指針至于輸入內(nèi)容尾部。
et_login_phone.setSelection(et_login_phone.getText().toString().length());
}
@Override
public void afterTextChanged(Editable s) {
}
});
如果您有更優(yōu)雅的解決方案,歡迎一起討論