经常会问这里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吗?
答案 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;
}
}