Я использую EditText
. Возможно ли, чтобы часть текста была неотредактирована, а остальная часть редактировалась в том же EditText
?Можем ли мы иметь неотредактированный текст в edittext
18
A
ответ
2
Вы можете реализовать TextChangedListener, где вы убедитесь, что те части вашего текста не получат deleted/overwritten
.
class TextChangedListener implements TextWatcher {
public void afterTextChanged(Editable s) {
makeSureNothingIsDeleted();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
}
TextChangedListener tcl = new TextChangedListener();
my_editable.addTextChangedListener(tcl);
16
Вы можете использовать
editText.setFocusable(false);
или
editText.setEnabled(false);
хотя отключение EditText
в настоящее время не игнорировать ввод с клавиатуры на экране (я думаю, что это Жук).
В зависимости от применения, может быть лучше использовать InputFilter
, отвергающее все изменения:
editText.setFilters(new InputFilter[] {
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
}
}
});
Также см this вопрос.
Для полей «показать/скрыть пароль» текстовое содержимое будет очищено, если вы используете этот трюк, а затем измените тип ввода («editText.setInputType» (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) '). Обходной путь заключается в том, чтобы временно установить фильтры в пустой массив при изменении типа ввода. –
@ david thx, Полезно знать –
@Josef +1 за хороший ответ –