美文网首页
对于android EditText输入内容的监听

对于android EditText输入内容的监听

作者: Android苏大强 | 来源:发表于2017-01-09 11:25 被阅读155次

    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) {

    }

    });

    }

    相关文章

      网友评论

          本文标题: 对于android EditText输入内容的监听

          本文链接:https://www.haomeiwen.com/subject/liacbttx.html