gpt4 book ai didi

Android - 逗号作为数字键盘上的小数点分隔符

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:21 26 4
gpt4 key购买 nike

我们需要为 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;
}

以上似乎适用于大多数设备,但对于三星 Galaxy S-II,软键盘在键盘中没有逗号。设备的 swype 键盘显示逗号,但默认键盘没有。

我已尝试覆盖 DigitsKeyListener,如前所述 here

有没有一种方法可以强制所有设备在数字键盘上使用逗号(适用时甚至总是)?

最佳答案

我认为您的代码与使用时存在同样的问题:

android:inputType="numberDecimal"android:digits="0123456789,"

(除了你的代码更通用)

问题 - 据我所知,当 inputTypenumberDecimal 时,某些键盘不遵守 digits 属性。这是一个 documented bug,我发现避免这种行为的唯一方法是使用 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();
}
}
}

关于Android - 逗号作为数字键盘上的小数点分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11009533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com