首页 > 解决方案 > 如何使 {EditText} 接受格式输入:

问题描述

车牌号(车牌号) - 2chars-2digit-2chars-4chars

我尝试使用此资源进行一些修改自定义格式编辑文本输入,但不幸的是我无法删除连字符(-)。只要有连字符(-),我就无法删除它。请帮助我找出问题所在。

标签: androidandroid-studioandroid-layoutandroid-widget

解决方案


您无法删除连字符,因为在 中ontextchanged,当您到达连字符位置时,您再次添加了连字符。

您应该通过添加文本或删除文本来区分是否需要连字符。

如果您通过删除文本到达连字符位置,您不想添加连字符。

您可以通过此代码检查if(before-count<0){

以下是您的工作示例

     editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {


                if ((editText.getText().length() + 1 == 3 || editText.getText().length() + 1 == 6 || editText.getText().length() + 1 == 9)) {
                    if(before-count<0){
                        editText.setText(editText.getText() + "-");
                        editText.setSelection(editText.getText().length());
                    }
                }
            }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
        }
    });
}

}

XML

 android:maxLength="13"

推荐阅读