Hoje eu ainda uso editable="false"
, mas também com focusable="false"
.
Eu acho que o caso em que precisamos tornar um EditText não editável é porque queremos manter seu estilo EditText (com esse sublinhado, com dica, etc), mas ele aceita outras entradas em vez de texto. Por exemplo, uma lista suspensa.
Nesse caso de uso, precisamos ter o EditText
clicável (portanto, enabled="false"
não é adequado). Definindo focusable="false"
esse truque, no entanto, ainda posso segurar o EditText por muito tempo e colar meu próprio texto nele da área de transferência . Dependendo do seu código e manuseio, isso pode até travar seu aplicativo.
Então eu também usei editable="false"
e agora está tudo ótimo, exceto o aviso.
EditText
, mantendo esta propriedades, basta usarUI.setReadOnly(myEditText, true)
a partir desta biblioteca . Se você deseja replicar esse comportamento sem a biblioteca, verifique o código-fonte desse pequeno método.