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

Android – 逗号作为数字键盘上的小数点分隔符,第1张

概述我们需要一个EditText的数字键盘.键盘应具有基于设备所选语言环境的小数分隔符.我们通过将自定义DigitsKeyListener设置为EditText来实现此功能 public class NumericDigitsKeyListener extends DigitsKeyListener { @Override protected char[] getAcceptedC 我们需要一个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所述

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

解决方法 我认为您的代码与使用相同的问题:

安卓的inputType = “numberDecimal”
机器人:位数=“0123456789”

(除了你的代码更通用)

问题 – 据我所知,当inputType为numberDecimal时,某些键盘只是不尊重数字属性.这是一个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 – 逗号作为数字键盘上的小数点分隔符全部内容,希望文章能够帮你解决Android – 逗号作为数字键盘上的小数点分隔符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1138271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存