Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android – 逗号作为数字键盘上的小数点分隔符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们需要一个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”并设置输入过滤器来限制字符.当然,键盘不适合数字,但找不到更好的解决方案.过滤器将是这样的

@H_38_2@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 – 逗号作为数字键盘上的小数点分隔符所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。