Kau*_*ani 8 android locale comma android-softkeyboard galaxy
我们需要一个数字键盘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;
}
Run Code Online (Sandbox Code Playgroud)
以上似乎适用于大多数设备,但对于三星Galaxy S-II,软键盘在键盘上没有逗号.设备的swype键盘显示逗号,但默认设置不显示.
我试过覆盖这里提到的DigitsKeyListener
有没有办法可以强制所有设备在数字键盘上使用逗号(适用时甚至是总是)?
我认为您的代码与使用以下代码有相同的问题:
android:inputType="numberDecimal" android:digits="0123456789,"
(除了你的代码更通用)
问题 - 据我了解,是当inputType为numberDecimal时,某些键盘不尊重数字属性。这是一个已记录的错误,我发现避免此行为的唯一方法是使用inputType="text"并设置输入过滤器来限制字符。当然,键盘不适合数字,但找不到更好的解决方案。过滤器将是这样的:
mEditText.setFilters(new InputFilter[] { new DecimalInputFilter() });
public class DecimalInputFilter implements InputFilter {
private static final String ALLOWED_CHARS = "0123456789,";
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source instanceof SpannableStringBuilder) {
final SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder)source;
for (int i = end - 1; i >= start; i--) {
final char currentChar = source.charAt(i);
if (!StringUtils.contains(ALLOWED_CHARS, currentChar)) {
sourceAsSpannableBuilder.delete(i, i+1);
}
}
return source;
} else {
final StringBuilder filteredStringBuilder = new StringBuilder();
for (int i = 0; i < end; i++) {
final char currentChar = source.charAt(i);
if (StringUtils.contains(ALLOWED_CHARS, currentChar)) {
filteredStringBuilder.append(currentChar);
}
}
return filteredStringBuilder.toString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6302 次 |
| 最近记录: |