对于android EditText输入内容的监听

2017-01-09  本文已影响155人  Android苏大强

edittext对于价钱输入内容的限制  内容请仔细阅读 如发现bug请于作者联系VX:li1234110

//输入监听

public static voidsetEditTextListener(finalEditText editText, final inttailLength) {

//输入类型  浮点double型

editText.setInputType(InputType.TYPE_CLASS_NUMBER| InputType.TYPE_NUMBER_FLAG_DECIMAL);

editText.addTextChangedListener(newTextWatcher() {

@Override

public voidbeforeTextChanged(CharSequence s, intstart, intcount, intafter) {

}

@Override

public voidonTextChanged(CharSequence s, intstart, intbefore, intcount) {

//当包含运算符。的时候

if(s.toString().contains(".")) {

//如果长度大于你设定的长度

if(s.length() -tailLength- s.toString().indexOf(".") >1) {

//窃取小数点前的数字加上小数点后你要限定的位数

s = s.toString().subSequence(0,

s.toString().indexOf(".") +1) +""+ s.toString().subSequence(s.toString().indexOf(".") +1,s.toString().indexOf(".") +tailLength+1);

//如果是.开头的加上0

if(s.toString().trim().substring(0,1).equals(".")) {

s ="0"+ s;

}

editText.setText(s);

editText.setSelection(s.length());

return;

}else{

//当长度没有大于限定位数的时候  如果是.开头的加上0

if(s.toString().trim().substring(0,1).equals(".")) {

s ="0"+ s;

editText.setText(s);

editText.setSelection(s.length());

return;

}

}

}

//当以0开头并且长度大于1的时候

if(s.toString().startsWith("0")

&& s.toString().trim().length() >1) {

//如果第二位不是运算符.就截取第二位到S字符串末尾

if(!s.toString().substring(1,2).equals(".")) {

editText.setText(s.subSequence(1,s.length()));

editText.setSelection(editText.getText().toString().length());

return;

}

}

}

@Override

public voidafterTextChanged(Editable s) {

}

});

}

上一篇下一篇

猜你喜欢

热点阅读