InputFilter中Space的意外行为

时间:2017-02-06 07:02:10

标签: android android-layout

我希望没有人在我的编辑文本中添加空间我通过使用输入过滤器来做到这一点但是我遇到的另一个问题是当我按空格两个时间空间按钮作为退格并删除用户输入的字符时。如果有人解决这个问题我会感激不尽的。 代码是: 这是我将输入过滤器设置为editText的地方。

 etDrivenByEmail.setFilters(new InputFilter[]{
                UtilityOfActivity.spaceNotAllowedInEditText()});
    }

这是我的全局输入过滤器方法:

public static InputFilter spaceNotAllowedInEditText(){

        InputFilter filter = new InputFilter() {
            public CharSequence filter(CharSequence source, int start, int end,
                                       Spanned dest, int dstart, int dend) {
                for (int i = start; i < end; i++) {
                    if (Character.isWhitespace(source.charAt(i))) {
                        return "";
                    }
                }
                return null;
            }
        };
        return filter;
    }

这是我的editText的xml:

  <EditText
                        android:id="@+id/editDrivenByMailID"
                        style="@style/editTextDefault"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="5"
                        android:hint="@string/email"
                        android:textColor="@color/color_navy_blue" />

1 个答案:

答案 0 :(得分:1)

    Please try this code.

    edittext.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

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

                }

                @Override
                public void afterTextChanged(Editable s) {

                    String result = edittext.getText().toString().trim() + s.toString().replaceAll(" ", "");
                    if (!s.toString().equals(result)) {
                        edittext.setText(result);
                    }
else{
edittext.setSelection(0);
}
                }
            });

    It's working fine.