En este post te voy a explicar cómo configurar un elemento EditText de Android para que no se puedan modificar los datos, es decir, que sea de solo lectura; pero que sí se pueda tocar y desencadenar el listener correspondiente.
Deshabilitar edición de EditText
Para ello simplemente tienes que agregar algunos atributos XML al EditText:
clickable
: para que el usuario pueda hacer click sobre él, debe estar entrue
focusable
: que no se le pueda dar focus, debe estar enfalse
inputType
:none
textIsSelectable
:false
Aquí pongo un ejemplo para deshabilitar la edición en un EditText:
De este modo los listeners van a seguir funcionando, pero el usuario no podrá escribir texto.
Pequeña nota
El usuario siempre va a encontrar la manera de habilitar la escritura, por ejemplo, podría pegar texto, cosa que se puede deshabilitar como se ve aquí.
A lo que me refiero es que no deberías confiar en la validación de ese modo; simplemente usa esto para la parte de la interfaz, y haz la validación en un lugar que no sea la vista.