2010-10-08 16 views

Odpowiedz

2

Trzeba programowo ustawić InputFilter na swojej EditText przez setFilters.

Z dokumentacji:

InputFilters może być dołączony do Editables ograniczyć zmiany, które mogą być wprowadzone do nich.

Możesz nawet zmienić dane wprowadzane przez użytkowników, na przykład przez dodanie kropki dziesiętnej, która jest pożądana, jeśli dobrze Cię zrozumiem.

-1

myślę, że można użyć:

android:numeric="decimal" 

na EditText

+1

To pozwoli uniknąć tylko znaków niedozwolonych w liczbach dziesiętnych. W rzeczywistości nie jest maską – marcosbeirigo

0

Zbudowałem maskę dziesiętną dla tekstu edycji, który automatycznie zmieni tekst edycji na żądaną liczbę miejsc dziesiętnych. W zasadzie, słuchasz zmian tekstu i utraty ostrości.

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); 

    } 

} 

Kompletne demo to here.

Powiązane problemy