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 en true
  • focusable: que no se le pueda dar focus, debe estar en false
  • inputType: none
  • textIsSelectable: false

Aquí pongo un ejemplo para deshabilitar la edición en un EditText:

<EditText
        android:id="@+id/etFecha"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:clickable="true"
        android:ems="10"
        android:focusable="false"
        android:inputType="none"
        android:textIsSelectable="false"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toBottomOf="@+id/textInputLayout" />

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.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto