android edittext输入限制两位小数

1,561 阅读1分钟

在XML中对EditText进行属性设置:

<android.support.v7.widget.AppCompatEditText
    android:layout_width="match_parent"
    android:layout_height="38dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="25dp"
    android:inputType="number"
    android:layout_marginTop="70dp"
    android:digits="0123456789."
    android:layout_toLeftOf="@id/dpr_submit"
    android:background="@null"/>

android:digits表示可以输入的文字在该范围以内

对EditText设置监听

mPartialAmount.addTextChangedListener(new TextWatcher() {
    private int selectionStart;
    private int selectionEnd;

    @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) {
        selectionStart = mPartialAmount.getSelectionStart();
        selectionEnd = mPartialAmount.getSelectionEnd();

        if (!NumberUtil.isOnlyPointNumber(mPartialAmount.getText().toString()) && selectionStart > 0) {
            //删除小数点后两位多余的数据
            s.delete(selectionStart - 1, selectionEnd);
            mPartialAmount.setText(s);
            //设置光标在文字的最后
            mPartialAmount.setSelection(s.length());
        }
    }
});

NumberUtil.isOnlyPointNumber的代码:

public static boolean isOnlyPointNumber(String number) {
    Pattern pattern = Pattern.compile("^\\d+\\.?\\d{0,2}$");
    Matcher matcher = pattern.matcher(number);
    return matcher.matches();
}