You can use TextWatcher:
editText.addTextChangedListener(new TextWatcher() {
private static final char spc = ' ';
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0 && (s.length() % 5) == 0) {
final char c = s.charAt(s.length() - 1);
if (spc == c) {
s.delete(s.length() - 1, s.length());
}
}
if (s.length() > 0 && (s.length() % 5) == 0) {
char c = s.charAt(s.length() - 1);
if (Character.isDigit(c) && TextUtils.split(s.toString(), String.valueOf(spc)).length <= 3) {
s.insert(s.length() - 1, String.valueOf(spc));
}
}
}
});
For space betwin character you can use
android:letterSpacing
In xml file