Android Edittext插入负数

时间:2014-02-17 12:18:49

标签: android android-edittext

经常会问这里Android emulator : insert negative number?

我已经设置了一个edittext:

       <EditText
        android:id="@+id/edWminLevel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.3"
        android:inputType="numberDecimal|numberSigned"
        android:text="0" />

当尝试插入负数时,我按下&#34; - &#34;它插入&#34; - &#34;,但它不会让我插入任何其他数字!它只能通过插入&#34; - &#34;插入完整的号码后。

这是一个BUG吗?

1 个答案:

答案 0 :(得分:0)

答案很简单:它不是BUG,它是程序员!

我只是发布这个以帮助他人。

我有一个InputFilter应用于EditText ...

EdWMin.setFilters(new InputFilter[] { new DecimalDigitsInputFilter(7, 2) });

这里的修正允许在数字前面的标志

    public class DecimalDigitsInputFilter implements InputFilter {

    Pattern mPattern;

    public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
        mPattern=Pattern.compile("[-+]?[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
    }



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

            Matcher matcher=mPattern.matcher(dest);       
            if(!matcher.matches())
                return "";
            return null;
        }

    }