将掩码应用于Android上的EditText的最佳方法是什么?

时间:2010-10-08 12:12:02

标签: java android


什么是在Android上屏蔽EditText的最佳方式?
我希望我的EditText表现得像这个十进制数字输入here。 有一个简单的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

您必须通过InputFilter以编程方式在EditText上设置setFilters

来自文档:

  

可以将InputFilters附加到Editables以约束可以对其进行的更改。

您甚至可以更改用户输入,例如通过添加小数点,如果我能正确找到您想要的小数点。

答案 1 :(得分:0)

我为编辑文本构建了一个十进制掩码,它会自动将编辑文本更改为您想要的小数位数。基本上,您会听取文本更改和失去焦点。

    private void formatNumber() {
    sNumberToFormat = etNumberToFormat.getText().toString();
    sDecimalMask = etDecimalMask.getText().toString();
    boolean periodMask = false;
    String delimiter = getDelimiter();
    String[] decimalMask = getsDecimalMask();


    if (decimalMask.length == 1) {
        return;
    } else {

        if (delimiter.equalsIgnoreCase(",")) {
            //decimal format only currently works with dot delimiters.
            sDecimalMask = sDecimalMask.replace(",", ".");
        }

        DecimalFormat df = new DecimalFormat(sDecimalMask);
        df.setRoundingMode(RoundingMode.UP);

        sNumberToFormat = df.format(Float.valueOf(sNumberToFormat.replace(",", ".")));
        //if (maxNumber > Float.valueOf(sNumberToFormat)) {
        if (delimiter.equalsIgnoreCase(",")) {
            sNumberToFormat = sNumberToFormat.replace(".", ",");
        }
        etNumberToFormat.setText(sNumberToFormat);

    }

}

完整演示为here

答案 2 :(得分:-1)

我认为你可以使用:

android:numeric="decimal"
上的