#android #android_edittext
EditText используется для вывода больших чисел. Как сделать отделение каждых трех разрядов числа пробелом? Например 9 999 999
Ответы
Ответ 1
Можно сделать это с помощью TextWatcher. Например, для форматирования номера телефона можно использовать готовый класс PhoneNumberFormattingTextWatcher, реализующий интерфейс TextWatcher: EditText inputField = (EditText) findViewById(R.id.inputfield); inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher()); В итоге вводимый текст +375298076740 будет выглядеть как +375 29 807-67-40 Если же Вам нужно выводить текст группами именно по три символа, можете воспользоваться следующим классом: public class OwnWatcher implements TextWatcher { // Change this to what you want... ' ', '-' etc.. private static final char space = ' '; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { // Remove spacing char if (s.length() > 0 && (s.length() % 4) == 0) { final char c = s.charAt(s.length() - 1); if (space == c) { s.delete(s.length() - 1, s.length()); } } // Insert char where needed. if (s.length() > 0 && (s.length() % 4) == 0) { char c = s.charAt(s.length() - 1); // Only if its a digit where there should be a space we insert a space if (Character.isDigit(c) && TextUtils.split(s.toString(), String.valueOf(space)).length <= 3) { s.insert(s.length() - 1, String.valueOf(space)); } } } } И присвойте его конкретному полю: inputField.addTextChangedListener(new OwnWatcher()); Вывод получится как на картинке:Ответ 2
Переопределить метод onDraw. В нем сделать логику, которая будет добавлять/удалять пробел. Возможно, есть лучше способы реализовать это.
Комментариев нет:
Отправить комментарий