![](/img/trans.png)
[英]How to force EditTextPreference to accept only four letters or more?
[英]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,因為該應用程序接受不止一種語言)。 我該怎么做呢?
我以前嘗試過許多過濾器,包括這些問題中建議的所有過濾器以及類似的過濾器:
使 EditText 字段僅接受 Android 中的字母和空格
使用這樣的過濾器,每當輸入一個數字然后輸入一個字母時,我就會遇到如下問題:
- 整個文本消失
- 整個文本被復制
- 最后幾個字符被復制
我還嘗試通過添加和android:digits
更改 XML,但無論如何它根本不限制輸入。
到目前為止,我嘗試過的每種inputType
都不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()
方法用於將光標放在字符串的末尾,否則它會重置到開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.