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) {
}
});
}
网友评论