2013-06-16 3 views
0

Как ограничить поле EditText только одной десятичной точкой. Допустим, пользователь должен ввести только один цифру/число после входит в (.)[decimal].Android: ограничение текстового поля на одну десятичную точку

Пользователь: 1,92 [Its invalid] Пользователь входит: 1,9 [Its Valid]

Ниже регулярное выражение я использую.

mPattern = Pattern.compile("[0-9]*+((\\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\\.)?"); 

У меня возникли проблемы с десятичными знаками, пользователь, если ввести его 23.1 штраф, но и тот же пользователь может ввести 2.31.

Как я могу ограничить пользователя вводить только одно число/цифру после десятичного числа.

+1

Этот вопрос охватывает довольно тот же вопрос, с десятичной ограничением. Включая решения с RegEx и интерфейсом InputFilter. http://stackoverflow.com/questions/5357455/limit-decimal-places-in-android-edittext –

ответ

0

Добавить TextWatcher в текстПросмотреть и использовать его методы для предотвращения ввода после точки более одного номера.

3

Как об использовании регулярных выражений для этого ..

public class DecimalDigitsFilter implements InputFilter { 

Pattern pattern; 

public DecimalDigitsFilter(int digitsBeforeZero,int digitsAfterZero) { 
    pattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?"); 
} 

@Override 
public CharSequence filter(CharSequence source, int start, int end, Spanned destination, int destinationStart, int destinationEnd) { 

    Matcher matcher=pattern.matcher(destination);  
    if(!matcher.matches()) 
     return ""; 
    return null; 
    } 
} 

А потом называют его ..

editText.setFilters(new InputFilter[] {new DecimalDigitsFilter(5,1)}); //5 before point and 1 after point.Change it as your need 
+1

Хорошая копия из моей ссылки .. –

Смежные вопросы