1

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

提前致谢。

4

2 回答 2

3

我找到了使用 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;
            }
        });
于 2014-06-11T03:09:56.587 回答
2

您可以通过文本更改侦听器执行此操作

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

于 2014-06-10T17:14:11.047 回答