【问题标题】:How to dynamically change card number input mask (Android, Java)如何动态更改卡号输入掩码(Android、Java)
【发布时间】:2023-03-28 22:51:01
【问题描述】:

我需要动态更改输入掩码。例如,如果用户输入 13 位数字,则输入一个掩码,如果输入 20 则另一个。

我正在使用 redmadrobot:inputmask。这是我的代码

ArrayList<String> affineFormats = new ArrayList<>();     
        affineFormats.add("[0000] [000] [000] [000]");
        affineFormats.add("[0000] [0000] [0000] [0000] [0000]");
        String format = "[0000] [000] [000] [000]";
        MaskedTextChangedListener listener = new PolyMaskTextChangedListener(
                format,
                affineFormats,
                true,
                etCardNumber,
                null,
                new MaskedTextChangedListener.ValueListener() {
                    @Override
                    public void onTextChanged(boolean b, String s) {
                   //here some code
                    }
                });
        etCardNumber.addTextChangedListener(listener);

但是当我输入卡号时,最后添加的卡号是根据 affineFormats 格式化的。请帮我解决这个问题。

【问题讨论】:

    标签: java android input-mask


    【解决方案1】:

    从您的代码看来,您使用的是我们库的稍微过时的版本。

    在 v.4 中,我们已经将 PolyMaskTextChangedListenerMaskedTextChangedListener 合并。我们还介绍了一个名为AffinityCalculationStrategy 的便捷实用程序,它实际上可能有助于解决您的问题。

    来自我们的Wiki

    亲和度计算策略

    Affinity 是一个整数,表示输入与当前掩码的相似度。因此,选择具有最高亲和力的掩码来格式化输出。

    亲和力计算策略是一个文本字段侦听器属性,允许更改亲和力计算背后的数学。

    ...

    AffinityCalculationStrategy.EXTRACTED_VALUE_CAPACITY— 当掩码格式根据提取值长度发生根本变化时,此策略会派上用场。

    (你的数字是提取的值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2017-11-27
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多