EditText は入力を小数点以下 2 桁と最大桁数に制限します

1.EditText コントロールのタイプを実数に設定します。

android:inputType="numberDecimal" (符号なし浮動小数点数)  
android:inputType="numberSigned|numberDecimal" (符号付き浮動小数点数)

2. 入力フィルターを作成します。

/**
 * 用于控制EditText最大输入小数点前位数和小数点后位数 <br/>
 * 示例 : mEditText.setFilters(DecimalDigitsInputFilter.getFilters(new DecimalDigitsInputFilter(5, 2))); <br/><br/>
 * 来源参考 : https://stackoverflow.com/questions/27077507/android-how-to-only-allow-a-certain-number-of-decimal-places
 *
 * @author savet
 */
public class DecimalDigitsInputFilter implements InputFilter {

    // 正则匹配
    private final Pattern mPattern;

    /**
     * 构建一个用于控制EditText最大输入小数点前位数和小数点后位数的输入过滤器
     *
     * @param digitsBeforeZero 小数点之前的位数
     * @param digitsAfterZero  小数点之后的位数
     */
    public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero) {
        String pattern = "^\\-?(\\d{0," + (digitsBeforeZero) + "}|\\d{0," + (digitsBeforeZero) + "}\\.\\d{0," + digitsAfterZero + "})$";
        mPattern = Pattern.compile(pattern);
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned destination, int destinationStart, int destinationEnd) {
        if (end > start) {
            // adding: filter
            // build the resulting text
            String destinationString = destination.toString();
            String resultingTxt = destinationString.substring(0, destinationStart)
                    + source.subSequence(start, end)
                    + destinationString.substring(destinationEnd);
            // return null to accept the input or empty to reject it
            return resultingTxt.matches(this.mPattern.toString()) ? null : "";
        }
        // removing: always accept
        return null;
    }

    public static InputFilter[] getFilters(InputFilter inputFilter) {
        return new InputFilter[]{inputFilter};
    }
}

3. EditText コントロールの入力フィルター InputFilter を設定します。

mEditText.setFilters(DecimalDigitsInputFilter.getFilters(new DecimalDigitsInputFilter(5, 2)));

おすすめ

転載: blog.csdn.net/savet/article/details/131105800