android之银行卡手机号码自动补齐空格
16lz
2021-01-25
在app添加银行卡手机号码是时每四位补一个空格,以增加用户体验
一、银行卡
举例:银行卡号:6221553741546546566
效果:6221 5537 4154 6546 566
用到,addTextChangedListener,setSelection等函数
代码示例:
public static void fillBankNumSpeace(final EditText mAddCardNumEdt){//银行卡补齐 空格 mAddCardNumEdt.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if (count == 1) { if (s.length() == 4) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(5); } if (s.length() == 9) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(10); } if (s.length() == 14) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(15); } if (s.length() == 19) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(20); } } else if (count == 0) { if (s.length() == 4) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(3); } if (s.length() == 9) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(8); } if (s.length() == 14) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(13); } if (s.length() == 19) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(18); } } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); }
注意:一般用户输入了第一遍卡号,要求再次输入账号,以验证两次卡号是否一致,这时不能直接调trim()去空格,再用 equals 比较,因为有的用户可能使用复制,粘贴功能,所以最好还是用replace("")去掉空格再比较。
二、 手机号也一样
代码示例:
public static void fillTelSpeace(final EditText mAddCardNumEdt){//手机号码后 补齐 空格 mAddCardNumEdt.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if (count == 1) { if (s.length() == 3) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(4); } if (s.length() == 8) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(9); } if (s.length() == 11) { mAddCardNumEdt.setText(s + " "); mAddCardNumEdt.setSelection(11); } } else if (count == 0) { if (s.length() == 4) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(3); } if (s.length() == 9) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(8); } if (s.length() == 11) { mAddCardNumEdt.setText(s.subSequence(0, s.length() - 1)); mAddCardNumEdt.setSelection(10); } } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); }
更多相关文章
- weex和Android的交互
- Android开发无法打开模拟器的问题:use '@foo' to launch a virtua
- Android(安卓)string.xml 显示特殊符号
- Android使用HttpURLConnection访问接口
- APIDEMO OS Vibrator 手机震动使用
- Android验证手机号、用户名正则表达式
- Android(安卓)EditText文本输入框禁止输入空格
- Android(安卓)电话查询(扩展成通讯录)
- android输入框EditText输入银行卡,输入手机,输入身份证格式化的