Нам нужна цифровая клавиатура для EditText. Клавиатура должна иметь десятичный разделитель в зависимости от выбранной локали устройства. Мы реализовали это, установив для пользовательского DigitsKeyListener значение EditText.
public class NumericDigitsKeyListener extends DigitsKeyListener {
@Override
protected char[] getAcceptedChars() {
char[] acceptedCharacters = null;
acceptedCharacters = new char[] {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
new DecimalFormatSymbols(Locale.getDefaultLocale()).getDecimalSeparator()
return acceptedCharacters;
}
/**
* @see android.text.method.DigitsKeyListener#getInputType()
*/
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
}
Вышеупомянутое, кажется, работает нормально для большинства устройств, однако для Samsung Galaxy S-II программная клавиатура не имеет запятой на клавиатуре. На клавиатуре swype устройства отображается запятая, а на клавиатуре по умолчанию - нет.
Я попытался переопределить DigitsKeyListener, как указано здесь
Есть ли способ заставить все устройства иметь запятую (когда это применимо или даже всегда) на цифровой клавиатуре?