En mi aplicación, tengo un EditText que el usuario solo tiene acceso de lectura, no acceso de escritura.
En el código que puse android:enabled="false"
.
Aunque el fondo de EditText cambió a oscuro, cuando hago clic en él, aparece el teclado y puedo cambiar el texto.
¿Qué debo configurar para desactivar EditText?
android
android-edittext
Hesam
fuente
fuente
EditText
mientras se mantienen estas propiedades, solo utilícelasUI.setReadOnly(myEditText, true)
desde esta biblioteca . Si desea replicar este comportamiento sin la biblioteca, consulte el código fuente de este pequeño método.Respuestas:
Creo que lo correcto sería establecer
android:editable="false"
.Y si te preguntas por qué mi enlace apunta a los atributos de
TextView
, la respuesta es porqueEditText
hereda deTextView
:Actualización:
como se menciona en los comentarios a continuación,
editable
está en desuso ( desde el nivel API 3 ). En su lugar, debería estar usandoinputType
(con el valornone
).fuente
editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
android:editable="false" android:focusable="false"
funciona muy bien para mí (olvídate de obsoleto, creo que android: editable no tiene nada que ver con android: inputType)use
EditText.setFocusable(false)
para deshabilitar la ediciónEditText.setFocusableInTouchMode(true)
para habilitar la edición;fuente
editText.setEnabled(false);
cambiará el color del texto a gris. Sin embargo, los hilanderos no cambian el color del texto cuando se usasetEnabled
, lo que lo convierte en una experiencia inconsistente.setFocusable(true)
? vea este enlace para ver la diferencia entresetFocusable()
ysetFocusableInTouchMode()
: stackoverflow.com/questions/23799064/…Puedes probar el siguiente método:
EditText habilitado:
EditText deshabilitado:
Funciona para mí y espero que te ayude.
fuente
editText.setFocusableInTouchMode(true)
lugar deeditText.setFocusable(true)
.Use esto para deshabilitar la entrada del usuario
android: editable = "false" Este método está en desuso.
fuente
Para desactivar la edición
EditText
, creo que podemos usarfocusable
ORenable
peroUsando
android:enabled=...
oeditText.setEnabled(...)
También cambia el color del texto
EditText
a gris.Al hacer clic no tiene efecto
Usando
android:focusable=...
oeditText.setFocusable(false)
-editText.setFocusableInTouchMode(true)
No cambia el color del texto de
EditText
Al hacer clic, resalta la
EditText
línea de fondo durante unos pocos milisegundosSalida
fuente
Como
android:editable="false"
se describe. Puede usar InputType TYPE_NULL en EditTextusar así:
fuente
Como en
android:editable="false"
desuso enxml
Si lo desea
java class
, también puede usar esto mediante programaciónfuente
Simplemente:
fuente
Establezca las siguientes propiedades en clase:
Funcionará sin problemas según lo requiera.
fuente
enabled
fue suficientePara deshabilitar la funcionalidad de un EditText, simplemente use:
en caso de que desee habilitarlo de alguna manera, puede usar:
fuente
si lo usa
android:editable="false"
, eclipse le recordará este mensaje "android: editable está en desuso: use inputType en su lugar".Entonces, en su
android:focusable="false"
lugar, me funcionó bien.fuente
ahora está en desuso y uso
fuente
TYPE_TEXT_VARIATION_PASSWORD
Siga esto para más developer.android.com/reference/android/text/InputTypeUsar en su
TextView
lugar.fuente
Deshabilitar = ENFOQUE + CLIC + CURSOR
Desactivar el foco, el clic y la visibilidad del cursor me ayuda.
fuente
Esto hará que su texto de edición esté deshabilitado .
Y al usar esto
Simplemente hará que su Edittext no muestre su teclado virtual , pero si está conectado a un teclado físico, le permitirá escribir.
fuente
Yo uso Google recientemente lanzado Biblioteca de diseño de materiales. En mi caso, funciona cuando uso android: focusable = "false" y android: cursorVisible = "false"
fuente
En mi caso, necesitaba mi
EditText
para desplazar el texto si no. de líneas excedemaxLines
cuando está deshabilitado. Esta implementación funcionó perfectamente para mí.fuente
Prueba este, funciona bien para mí:
Nota: debe agregar
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
su actividad okeyboard
aparecerá una ventana emergente por primera vez.fuente
Como alguna respuesta, menciónelo, si deshabilita editText se vuelve gris y si establece false enfocable, se muestra el cursor.
Si desea hacerlo solo con xml, este fue el truco
Simplemente agrego un FrameLayout que aparece sobre editText y lo configuro enfocable y se puede hacer clic para que editText no se pueda hacer clic.
fuente
Esto funciona para mi:
android: focusable = "false"
fuente
Del comentario de @Asymptote sobre la respuesta aceptada, use:
... y Bob es tu tío.
fuente
Hoy todavía lo uso
editable="false"
, pero también confocusable="false"
.Creo que el caso que necesitamos para que un EditText no sea editable, es porque queremos mantener su estilo EditText (con ese subrayado, con una pista, etc.), pero acepta otras entradas en lugar de texto. Por ejemplo una lista desplegable.
En tal caso de uso, necesitamos que se pueda hacer
EditText
clic (por lo tanto,enabled="false"
no es adecuado).focusable="false"
Sin embargo, al configurar este truco, aún puedo mantener presionado el EditText y pegar mi propio texto en el portapapeles . Dependiendo de su código y manejo, esto puede incluso bloquear su aplicación.Así que también usé
editable="false"
y ahora todo es genial, excepto la advertencia.fuente
puede usar
android:focusable="false"
pero también debe deshabilitar el cursor; de lo contrario, la función copiar / pegar seguiría funcionando.entonces, usa
fuente
Hay múltiples fue cómo lograr múltiples niveles de discapacitados.
editText.setShowSoftInputOnFocus(false);
yeditText.setFocusable
evita que se
EditText
muestre el teclado - escribiendo en algún texto. Pero el cursor todavía es visible y el usuario puede pegar algo de texto.editText.setCursorVisible(false)
Oculta el cursor. No estoy seguro de por qué querrías hacer eso aunque. El usuario puede ingresar texto y pegar.
editText.setKeyListener(null)
Encuentro esta manera más conveniente. No hay forma de que el usuario pueda ingresar texto, pero el widget aún funciona
OnClickListener
si desea activar la acción cuando el usuario lo tocaeditText.setEnabled(false);
completamente deshabilita
EditText
. Literalmente es de 'solo lectura', el usuario no puede ingresar ningún texto y (por ejemplo)OnClickListener
no funciona con él.Documentación TextEdit
fuente
Establezca esto en su código XML, funciona.
android: focusableInTouchMode = "false"
fuente