2009-05-26 3 views

ответ

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 вопрос.

+2

Для полей «показать/скрыть пароль» текстовое содержимое будет очищено, если вы используете этот трюк, а затем измените тип ввода («editText.setInputType» (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) '). Обходной путь заключается в том, чтобы временно установить фильтры в пустой массив при изменении типа ввода. –

+0

@ david thx, Полезно знать –

+1

@Josef +1 за хороший ответ –