2010-10-08 25 views

回答

2

你必須setFiltersEditText以編程方式設置的InputFilter

從文檔:

InputFilters可以連接到Editables約束,可以對他們進行的更改。

你甚至可以改變用戶輸入,例如通過添加一個小數點,這是你想要的,如果我得到你正確的。

-1

我認爲你可以使用:

android:numeric="decimal" 

您的EditText

+1

這隻會避免在十進制數字中不允許的字符。其實不是一個面具 – marcosbeirigo 2010-10-15 10:36:32

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

相關問題