【问题标题】:How do I format a string into EditText in Android with "AAA-AAA-AAA" format如何在 Android 中使用“AAA-AAA-AAA”格式将字符串格式化为 EditText
【发布时间】:2014-06-10 17:11:45
【问题描述】:

我需要输入由破折号分隔的 9 个大写字母,例如 AAA-AAA-AAA 和 此输入必须在输入时进行格式化。

提前致谢。

【问题讨论】:

标签: android android-edittext android-input-filter


【解决方案1】:

我找到了使用 TextWatcher 的解决方案。我正在使用

android:inputType="textCapCharacters|textNoSuggestions"

用于 EditText 输入类型,以便仅接收大写字母。

        txtCode = (EditText) findViewById(R.id.txtCode);

        txtCode.addTextChangedListener( new TextWatcher() {
            boolean isEdiging;
            @Override 
            public void onTextChanged(CharSequence s, int start, int before, int count) { }
            @Override 
            public void beforeTextChanged(CharSequence s, int start, int count, int after) { }


            @Override
            public void afterTextChanged(Editable s) {
                if(isEdiging) return;
                isEdiging = true;
                // removing old dashes
                StringBuilder sb = new StringBuilder();
                sb.append(s.toString().replace("-", ""));

                if (sb.length()> 3)
                    sb.insert(3, "-");
                if (sb.length()> 7)
                    sb.insert(7, "-");
                if(sb.length()> 11)
                    sb.delete(11, sb.length());

                s.replace(0, s.length(), sb.toString());
                isEdiging = false;
            }
        });

【讨论】:

  • 直接修改可编辑项——而不是在 EdtiText 上调用 setText——是一种很好的方法,因为它简化了光标的设置。
【解决方案2】:

您可以通过文本更改列表器来做到这一点

当 text_size%3==0 插入“-”字符时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多