当输入所需的格式文本时,如何停止编辑文本添加文本?

时间:2015-05-13 10:14:41

标签: android android-edittext

我的要求是当用户输入10位数字,一个点和两个小数点(0123456789.00)。一旦用户自动输入此格式,编辑文本应该停止向其添加文本。用户不应输入超过一点。

是否有可能..?。需要帮助

提前谢谢..!

4 个答案:

答案 0 :(得分:2)

您可以使用EditText将文字过滤器应用于editText.setFilters(filter),因此使用的方法如下:

text = (EditText) findViewById(R.id.text);
validate_text(text);

// the method validate_text that forces the user to a specific pattern
protected void validate_text(EditText text) {

    InputFilter[] filter = new InputFilter[1];
    filter[0] = new InputFilter() {

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

            if (end > start) {
                String destText = dest.toString();
                String resultingText = destText.substring(0, dstart)
                        + source.subSequence(start, end)
                        + destText.substring(dend);
                if (!resultingText
                        .matches("^\\d{1,10}(\\.(\\d{1,2})?)?")) {
                    return "";
                } 
            }

            return null;
        }
    };
    text.setFilters(filter);
}

这会强制用户输入" dot"输入数字后,将强制他仅输入"两位数字"在" dot"。

之后

答案 1 :(得分:0)

您可以在编辑文本中添加TextWatcher并收听文字编辑事件。

答案 2 :(得分:0)

您会对TextWatcher感兴趣。你最终会做EditText.addTextChangedListener (TextWatcher)

答案 3 :(得分:0)

我没有尝试过,但它应该有用。

final Editable text = new SpannableStringBuilder("example");
boolean stop = false;

et.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        if(stop) {
            s = text;
        } else if (text.toString().equals(s.toString())) {
            stop = true;
        }
    }
});