标签:
一.简述需求
1.需求是输入数字是删除第一位数字后位是0的禁止删除(如支付宝)
2.需求是可以删除任何位置的数字。如果删除第一位后面是0,就去掉无效的0
二.具体的实际例子如:
1010需求1来做:删除第一位是禁止删除
1010需求2来做:删除第一位变成10
三.下面具体上代码
方式一
private void subEditTextString(final EditText et) {
if (et != null) {
et.addTextChangedListener(new TextWatcher() {
String str2 = "";
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
str2 = et.getText().toString();
}
@Override
public void afterTextChanged(Editable s) {
String sss = et.getText().toString();
if ("".equals(sss)) {
// et.setText("");
return;
} else {
char c = sss.charAt(0);
if ("0".equals(c + "")) {
et.setText(str2);
et.setSelection(str2.length() + 1);
}
}
}
});
}
}方式二
private void subEditTextString(final EditText et) {
if (et != null) {
et.addTextChangedListener(new TextWatcher() {
Arraylist<String> list;
public void onTextChanged(CharSequence s, int start,
int before, int count) {
String str = et.getText().toString();
Pattern p = Pattern.compile("[1-9]\\d*");
Matcher m = p.matcher(str);
list = new ArrayList<String>();
while (m.find()) {
list.add(m.group(0));
}
if (list.size()>0) {
System.out.println(list.size() + list.get(0));
et.removeTextChangedListener(this);
et.setText(list.get(0));
et.addTextChangedListener(this);
}else{
et.removeTextChangedListener(this);
et.setText("");
et.addTextChangedListener(this);
}
et_charge_money.setSelection(et.getText().toString().length())
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
标签:
原文地址:http://blog.csdn.net/shayubuhuifei/article/details/51364334