而不是5118710,它应该是511-8710.我想在用户输入EditText中已有3位数的用户之后添加一个破折号. EditText的最大长度仅为7位数.
在我弄清楚上述问题之后,我再次陷入编码困境.当我已经输入3位数字时,它会附加破折号(这就是我想要发生的事情),但我的问题是接下来的3位数字还附加破折号(如下:511-871 – )…请帮我这个.谢谢!
txt_HomeNo.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s,int start,int before,int count) { boolean flag = true; String eachBlock[] = txt_HomeNo.getText().toString().split("-"); for (int i = 0; i < eachBlock.length; i++) { if (eachBlock[i].length() > 3) { flag = false; } } if (flag) { txt_HomeNo.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v,int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL) keyDel = 1; return false; } }); if (keyDel == 0) { if (((txt_HomeNo.getText().length() + 1) % 4) == 0) { if (txt_HomeNo.getText().toString().split("-").length <= 3) { txt_HomeNo.setText(txt_HomeNo.getText() + "-"); txt_HomeNo.setSelection(txt_HomeNo.getText().length()); } } a = txt_HomeNo.getText().toString(); } else { a = txt_HomeNo.getText().toString(); keyDel = 0; } } else { txt_HomeNo.setText(a); } }
解决方法
为txt_HomeNo实现以下修改过的addTextChangedListener.下面的代码是检查输入的文本的长度是否为3,如果是,则将 – 添加 – .不是一个非常强大的解决方案但它的工作
txt_HomeNo.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s,int count) { txt_HomeNo.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL) keyDel = 1; return false; } }); if (keyDel == 0) { int len = txt_HomeNo.getText().length(); if(len == 3) { txt_HomeNo.setText(txt_HomeNo.getText() + "-"); txt_HomeNo.setSelection(txt_HomeNo.getText().length()); } } else { keyDel = 0; } } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence arg0,int arg1,int arg2,int arg3) { // TODO Auto-generated method stub } });