用十进制限制android中的编辑文本

时间:2014-11-25 10:21:07

标签: android

我对editText中的限制号有疑问。我想用户只能输入1-70的号码。当用户想要放置70.01或更多时,我想不允许它们。只允许两位小数。总长度为5个字符,包括点。

我能够限制之前和之后小数点后。 &安培;也限制70,但用户可以在我想要阻止的编辑文本中输入70.99(不知道为什么)。用户输入71或更多时的验证工作

这是我在片段中使用的构造函数

     txtno.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(Integer.parseInt(getString(R.string.length)),2,txtno)});

这是为了& amp;十进制之前

@Override
public CharSequence filter(CharSequence source, int start, int end,Spanned dest,    int dstart, int dend) {

    mTextView.setKeyListener(DigitsKeyListener.getInstance(true,true));
    String etText = mTextView.getText().toString();
    String temp = mTextView.getText() + source.toString();
    if (temp.equals(".")) {

        return "0.";
    } else if (temp.toString().indexOf(".") == -1) {

        // no decimal point placed yet
        if (temp.length() > mMyint) {

            return "";
        }
    } else {

        int dotPosition;
        int cursorPositon = mTextView.getSelectionStart();

        if (etText.indexOf(".") == -1) {

            dotPosition = temp.indexOf(".");
        } else {

            dotPosition = etText.indexOf(".");
        }
        if (cursorPositon <= dotPosition) {

            String beforeDot = etText.substring(0, dotPosition);
            if (beforeDot.length() < mMyint) {

                    return source;
            } else {

                if (source.toString().equalsIgnoreCase(".")) {

                    return source;
                    } else {

                    return "";
                    }
            }
        } else {

            temp = temp.substring(temp.indexOf(".") + 1);
            if (temp.length() > mMydec) {

                return "";
            }
        }
    }
    return null;
}

&安培;这是textWatcher for limit 70

public void afterTextChanged(Editable s) {

    try{

        if(Integer.parseInt(s.toString())>70){

            s.replace(0, s.length(), s.toString());
        }
    }catch(Exception e){}

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题是你试图解析int - 你需要解析double。