La desactivación de los EditText en Android

En mi aplicación tengo un EditText que el usuario sólo tiene acceso de Lectura no acceso de Escritura.

En el código me puse android:enabled="false".

Aunque el fondo de EditText cambiado a la oscuridad, cuando hago clic en el teclado aparece y puedo cambiar el texto.

¿Qué debo configurar para desactivar EdidText?

Gracias.

  • Es posible preservar tanto el estilo de la vista y el desplazamiento de comportamiento. Para deshabilitar un EditText manteniendo esta propiedades, sólo tiene que utilizar UI.setReadOnly(myEditText, true) de esta biblioteca. Si desea replicar este comportamiento sin la biblioteca, check out el código fuente para este pequeño método.
InformationsquelleAutor Hesam | 2010-11-28

23 Kommentare

  1. 229

    Creo que la correcta sería establecer android:editable="false".

    Y si se preguntan por qué mi enlace punto a los atributos de TextView, la respuesta es porque EditText hereda de TextView:

    EditText es una chapa fina de más de
    TextView que se configura para ser
    editable.

    Actualización:

    Como se ha mencionado en los comentarios de abajo, editable está en desuso (desde la API de nivel 3). En su lugar usted debe estar utilizando inputType (con el valor none).

    • gracias Nailuj, por desgracia, no funcionó. Después de agregar tu sugerencia teclado aparece y no hay posibilidad de cambiar el texto.
    • Sospecho que usted está haciendo algo mal entonces. Si usted lee la documentación de la android:editable atributo, se dice que la TextView (y EditText que se hereda de la TextView) no tienen un método de entrada si este atributo se establece en false. También he probado a mí mismo, y la configuración de android:editable="false" en un EditText en mi propia aplicación hace que sea imposible para escribir texto en él (todavía es posible posicionar el cursor dentro de ella, aunque). Usted debe publicar un ejemplo de tu código, a continuación, podemos ver lo que estás haciendo mal.
    • gracias Nailuj, Sí, usted dijo correcta. Pongo el código en un lugar equivocado. sin embargo, después de corregirlo, que funciona bien.
    • android:editable está en desuso. android:inputType=»none» debe utilizarse en su lugar, pero contiene error y no funciona. Sería bueno que todas las estrellas en el tema aquí: code.google.com/p/android/issues/detail?id=2854
    • android:inputType="none" trabajó para mí. Gracias Viktor.
    • editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
    • Y ¿cómo debo cambiar en mi código??
    • también cuando tengo multilínea EditText y me puse android:inputType=»none» cambia a una sola línea. Es un heck para deshabilitar un multilínea EditText sin embargo permitir al usuario leer el texto completo.
    • android:editable="false" android:focusable="false" funciona muy bien para mí (olvidarse obsoleto, creo que android:editable no tiene nada que ver con android:inputType)
    • El problema para mí es que la envoltura se rompe cuando hago esto. EditText no parece envolver correctamente.
    • Para todos aquellos, para quienes android:inputType=»none» no funciona, pruebe: android:inputType=»none» con android:seleccionable=»false»

  2. 153

    uso EditText.setFocusable(false) para deshabilitar la edición

    EditText.setFocusableInTouchMode(true) para habilitar la edición;

    • Funciona, pero no es una buena práctica porque la vista se ve como puede ser editable pero no se puede. Trabajó muy bien para mí, porque mi punto de Vista había un fondo personalizado, así que +1.
    • Yo realmente prefiero este. No quiero que mi caja de color gris. 🙂
    • En Android 4.4, esta opción mantiene el texto original de color. El uso de editText.setEnabled(false); va a cambiar el color del texto de color gris. Sin embargo, los hilanderos de no cambiar el color del texto cuando se utiliza setEnabled, lo que es incoherente experiencia.
    • ¿por qué no setFocusable(true) ? vea este enlace para ver la diferencia entre setFocusable() y setFocusableInTouchMode(): stackoverflow.com/questions/23799064/…
    • Esto realmente se adapta a mis necesidades. He creado un compuesto vista personalizada con un EditText en el interior. Estoy teniendo problemas para hacer la vista personalizada de la mina que acaba de aceptar clics, pero no editable, de esta forma se inicia una fecha en el selector de cuadro de diálogo. Esta solución funciona, ya que no deshabilitar onClickListeners
  3. 59

    Usted puede probar el siguiente método :

     private void disableEditText(EditText editText) {
        editText.setFocusable(false);
        editText.setEnabled(false);
        editText.setCursorVisible(false);
        editText.setKeyListener(null);
        editText.setBackgroundColor(Color.TRANSPARENT); 
     }

    Habilitado EditText :

    La desactivación de los EditText en Android

    Movilidad EditText :

    La desactivación de los EditText en Android

    Funciona para mí y espero que sea de ayuda para usted.

    • Esto se parece a un TextView. Es tan increíble. Esto es lo que estoy buscando.
    • En caso de que alguien tiene el mismo problema con la activación de la espalda – tienes que llamar a editText.setFocusableInTouchMode(true) en lugar de editText.setFocusable(true).
    • Esto desactiva el desplazamiento multilínea editext
  4. 58

    Usar esto para desactivar la entrada de usuario

    android:focusable="false"

    android:editable=»false» Este método está en desuso uno.

    • Esto debe ser aceptado respuesta. Configuración del tipo de entrada: ‘none’, como se sugiere en otras respuestas no (siempre) de trabajo. Habilitada la opción ‘false’ impide la edición, pero también se atenúa con el texto que puede o puede no ser el deseado.
  5. 29

    Para deshabilitar la edición EditText, creo que podemos utilizar focusable O enable pero

    1. Utilizando android:enabled=... o editText.setEnabled(...)

      También cambios el color del texto en EditText a gris.

      Cuando hace clic en él no tiene ningún efecto

    2. Utilizando android:focusable=... o editText.setFocusable(false)editText.setFocusableInTouchMode(true)

      Se no cambia el color del texto de EditText

      Cuando se hace clic en ella resalta la EditText línea de fondo para unos pocos milisegundos

    Salida

    La desactivación de los EditText en Android

  6. 19

    Como android:editable="false" es depricated.Usted puede utilizar InputType TYPE_NULL en EditText

    uso como esta :

    editText.setInputType(InputType.TYPE_NULL);
    • Gustó esta respuesta porque no deshabilitar el onClickListener en el campo.
  7. 17

    Como android:editable="false" obsoleto
    En xml

    Uso android:enabled="false" es muy sencillo. ¿Por qué utilizar más el código?

    Si quieres en java class también puede utilizar esta programación

     editText.setEnabled(false);
    • el uso de android:enabled=»true» para habilitar
  8. 9

    Simplemente:

    editText.setEnabled(false);
    • ¿En qué difiere la respuesta anterior (así como la pregunta)?
    • Cual?
    • setFocusable(falso) también le permite establecer un OnClickListener.
  9. 5

    Debajo de propiedades en clase:

    editText.setFocusable(false);
    editText.setEnabled(false);

    Funcionará sin problemas como usted requirió.

    • sólo enabled fue suficiente
  10. 4

    si utiliza android:editable="false", eclipse recordar este mensaje «android:editable está en desuso: el Uso de inputType lugar».

    Así, puedo utilizar android:focusable="false" lugar, funcionó bien para mí.

  11. 2

    Esto hará que tu edittext movilidad.

    editText.setEnabled(false);

    Y mediante el uso de este

    editText.setInputType(InputType.TYPE_NULL);

    Sólo hará que su Edittext no mostrar su softkeyboard, pero si está conectado a un teclado físico, va a dejar de escribir.

  12. 2

    Para deshabilitar la funcionalidad de un EditText, sólo tiene que utilizar:

    EditText.setInputType(InputType.TYPE_NULL);

    en caso de querer activarlo de alguna manera, entonces usted puede utilizar:

    EditText.setInputType(InputType.TYPE_CLASS_TEXT);
  13. 1

    En mi caso necesitaba que mi EditText para desplazarse por el texto si no. de las líneas de superar maxLines cuando su movilidad. Esta aplicación funcionó a la perfección para mí.

    private void setIsChatEditTextEditable(boolean value)
    {
        if(value)
        {
            mEdittext.setCursorVisible(true);
            mEdittext.setSelection(chat_edittext.length());
           //use new EditText(getApplicationContext()).getKeyListener()) if required below
            mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener());  
        }
        else
        {
            mEdittext.setCursorVisible(false);
            mEdittext.setKeyListener(null);
        }
    }
  14. 1

    Probar este, funciona muy bien para mí:

    public class CustomEdittext extends EditText {
    
    Boolean mIsTextEditor=true;
    public CustomEdittext(Context context, AttributeSet attrs) {
        super(context, attrs);
        //TODO Auto-generated constructor stub
    }
    
    @Override
    public boolean onCheckIsTextEditor() {
        //TODO Auto-generated method stub
        return mIsTextEditor;
    }
    
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //TODO Auto-generated method stub
        mIsTextEditor=false;
        Boolean mOnTouchEvent=super.onTouchEvent(event);
        mIsTextEditor=true;     
        return mOnTouchEvent;
    } }

    Nota: es necesario agregar this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    en su actividad o bien keyboard se emergente en el primer tiempo.

  15. 1

    Como algunos de respuesta mencionar que, si se desactiva el editText él se vuelven grises y si se establece seleccionable falso el cursor está mostrando.

    Si quieres hacerlo sólo con xml esto hizo que el truco

           <YourFloatLabel
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
                <EditText
                    android:id="@+id/view_ads_search_select"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
    
                <FrameLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:focusable="true"
                    android:clickable="true"/>  
           </YourFloatLabel>

    Yo simplemente agregar un FrameLayout aparecen por encima de la editText y establecer seleccionable y botones de modo que el editText no puede ser haga clic en.

  16. 0

    Esto funciona para mí:

    android:seleccionable=»false»

    • Cómo es esto diferente de lo que Sampath Kumar publicado hace 4 años?
  17. 0

    Hoy todavía puedo usar editable="false", pero también con focusable="false".

    Creo que el caso de que necesitemos hacer un EditText editable, es porque queremos mantener su EditText estilo (con subrayado, con la sugerencia, etc), pero acepta otras entradas en lugar de texto. Por ejemplo, una lista desplegable.

    En tal caso, tenemos que tener el EditText clickable (así enabled="false" no es adecuado). Configuración de focusable="false" hacer este truco, sin embargo, todavía puedo larga mantenga en el EditText y pegar mi propio texto sobre el mismo desde el portapapeles. Dependiendo de su código y el manejo de esta puede incluso bloquear su aplicación.

    Así que también se utiliza editable="false" y ahora todo está bien, excepto la advertencia.

  18. 0

    puede utilizar android:focusable="false" pero también hay que desactivar el cursor de otra manera
    la función copiar/pegar todavía funciona.

    así, el uso de

    android:focusable="false"
    android:cursorVisible="false"
  19. 0

    Hay múltiples era cómo lograr varios niveles de movilidad.

    • editText.setShowSoftInputOnFocus(false); y editText.setFocusable

    impide que el EditText de mostrar el teclado de escritura de un texto. Pero cursor es aún visible y el usuario puede pegar en un texto.

    • editText.setCursorVisible(false)

    oculta el cursor. No sé por qué quieres hacer eso tho. El usuario puede introducir texto & paste.

    • editText.setKeyListener(null)

    Me parece que este modo más conveniente. No hay ninguna manera de cómo el usuario puede introducir texto, pero widget todavía funciona con OnClickListener si desea activar la acción cuando el usuario toca

    • editText.setEnabled(false);

    desactiva completamente EditText. Es, literalmente, ‘sólo lectura’, el usuario puede introducir cualquier texto en ella y (por ejemplo) OnClickListener no trabajar con él.

    TextEdit documentación

  20. -1

    De @Asíntota comentario sobre la aceptada respuesta, uso:

    myEditText.setEnabled(false);
    myEditText.setInputType(InputType.TYPE_NULL);

    …y Bob es tu tío.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea