允许 AndroidX EditTextPreference 只接受字母

Allow AndroidX EditTextPreference to only accept letters

我设置了一个 EditTextPreference,并设置了一个过滤器来限制它的大小,如下所示:

pref.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
            @Override
            public void onBindEditText(@NonNull EditText editText) {
                editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(10)});
            }
        });

我还想将其限制为仅接受字母(不只是 a-zA-Z,因为该应用程序接受不止一种语言)。我该怎么做呢?

我之前尝试过很多过滤器,包括这些问题和类似问题中建议的所有过滤器:

Making an EditText field accept only letters and white spaces in Android

使用这样的过滤器,每当输入一个数字然后输入一个字母时,我都会遇到如下问题:
- 整个文本消失
- 整个文本被复制
- 最后几个字符重复

我也尝试通过添加和 android:digits 来更改 XML,但无论如何它根本不限制输入。
到目前为止,我尝试过的每个 inputType 都没有将键盘限制为只能输入字母。

编辑:我明白了,请在下面回答。

我刚刚在 EditText 中添加了一个 TextWatcher,并用正则表达式替换了文本,如下所示:

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) {
                        editText.removeTextChangedListener(this);
                        String replaced = s.toString().replaceAll("[^[:alpha:] ]", "");
                        editText.setText(replaced);
                        editText.setSelection(replaced.length());
                        editText.addTextChangedListener(this);
                    }

                    @Override
                    public void afterTextChanged(Editable s) {

                    }
                });

这允许添加字母,但是当输入任何其他内容时,它不会显示也不会保存在任何地方。 setSelection() 方法用于将光标放在字符串的末尾,否则它会重置到开头。