В моей деятельности у меня есть EditText для захвата имени файла.Я использую TextWatcher, чтобы запретить пользователям вводить определенные символы, которые я не хочу, чтобы они использовали в своем имени файла.По сути, я хочу, чтобы пользователи вводили только следующие символы: [a-zA-Z_0-9].
@Override
public void afterTextChanged(Editable text) {
String textStr = text.toString();
int length = text.length();
if (!Pattern.matches("\\w*", textStr)) {
text.delete(length-1, length);
}
}
EDIT: добавление дополнительного кода в onCreate (...)
fileNameEditText = (EditText)findViewById(R.id.UploadPhoto_fileNameEditText);
fileNameEditText.addTextChangedListener(this);
в макете XML-файла
<EditText
android:id="@+id/UploadPhoto.fileNameEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20sp"
android:layout_marginRight="10sp"
android:layout_toRightOf="@id/UploadPhoto.fileNameLabel"/>
Это прекрасно работает, поскольку пользователи не могут вводить такие вещи, как "\" и ".".Проблема, с которой я сталкиваюсь, заключается в том, что, если они вводят эти символы, они отображаются в поле для ввода слов.Это немного раздражает, потому что если вы пытаетесь удалить символ, используя клавишу возврата, он сначала удаляется из предложения (даже если этот символ не отображается в окне EditText).
Как предотвратить нежелательные символы отпоявляется в окне слова предложения?
См. Снимок экрана ниже.Обратите внимание, что «-» (дефис) появляется в окне предложения, но не в EditText.Также обратите внимание, что после дефиса есть еще один допустимый символ в поле предложения, который также не отображается в EditText.Это, по существу, блокирует ввод текста пользователем, пока он не удалит дефис, даже если его нет в EditText.
ОБНОВЛЕНИЕ: та же проблема возникает и может быть воспроизведена с помощью InputFilter вместо TextWatcher.
ОБНОВЛЕНИЕ: Я хотел бы уточнить, что моя цель не состоит в том, чтобы полностью исключить Предложения.Проблема в том, что когда вы запрещаете отображение определенных символов в EditText, они все равно отображаются в предложениях.Моя цель (для которой назначена награда) состоит в том, чтобы не допустить появления в предложениях одинаковых символов.
![enter image description here](https://i.stack.imgur.com/VIMFy.png)