EditText используется для вывода больших чисел. Как сделать отделение каждых трех разрядов числа пробелом? Например 9 999 999
Ответ
Можно сделать это с помощью 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());
Вывод получится как на картинке:
Комментариев нет:
Отправить комментарий