2009-05-26 19 views

Respuesta

2

Puede implementar un TextChangedListener donde se asegura de que esas partes de su texto no obtengan 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

Usted podría utilizar

editText.setFocusable(false);

o

editText.setEnabled(false);

a pesar de la desactivación de la EditText Actualmente no ignora la entrada del teclado en pantalla (Creo que es un insecto).

Dependiendo de la aplicación que podría ser mejor usar un InputFilter que rechaza todos los cambios:

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) : ""; 
     } 
    } 
});

Véase también this cuestión.

+2

Para mostrar/ocultar campos de contraseña, el contenido de texto se borra si usa este truco y luego cambia el tipo de entrada ('editText.setInputType (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)'). La solución consiste en establecer temporalmente los filtros en la matriz vacía mientras cambia el tipo de entrada. –

+0

@david thx, es bueno saber –

+1

@Josef +1 por buena respuesta –

Cuestiones relacionadas