validar style studio solo propiedades obtener numeros example edittext datos android android-edittext

style - ¿Cómo hacer que EditText no sea editable a través de XML en Android?



propiedades edittext android (24)

¿Puede alguien decirme cómo hacer que un EditText no sea editable a través de XML? He intentado configurar android:editable a false , pero

  1. está en desuso y
  2. no funciono

Además de @mahe madi puedes probar esto también

editText.setEnabled(false); editor.setTextColor(Color.BLACK);

Este método esconderá el cursor, perderá el enfoque y, lo que es más importante, establecerá el color del texto en negro, como TextView.

Y para volver atrás a editText, simplemente haga esto para obtener todas las propiedades de EditText.

editText.setEnabled(true);

Espero eso ayude :)


Agregue esto a su archivo xml EditText:

<EditText ... android:clickable="false" android:cursorVisible="false" android:focusable="false" android:focusableInTouchMode="false"> </EditText>

Hará el mismo efecto que android:editable="false" . Trabajó para mí, espero que funcione para ti también.


Como mencionaste, android: editable está en desuso. android: inputType = "none" debe usarse en su lugar pero no funciona debido a un error ( https://code.google.com/p/android/issues/detail?id=2854 )

Pero puedes lograr lo mismo usando focusable.

Vía XML:

<EditText ... android:focusable="false" </EditText>

Desde el código:

((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);


Como se mencionó en otras respuestas, puede hacer un setEnabled(false) pero como está preguntando cómo configurarlo a través de XML, aquí está cómo hacerlo.

Agregue el siguiente atributo a su EditText :

android:enabled="false"


Cuando quiero que una actividad no se enfoque en el texto de edición y tampoco muestre el teclado al hacer clic, esto es lo que funcionó para mí.

Añadiendo atributos al layout principal.

android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"

y luego el campo EditText

android:focusable="false" android:focusableInTouchMode="false"

Aquí hay un ejemplo:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_home" android:background="@drawable/bg_landing" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="0dp" android:paddingLeft="0dp" android:paddingRight="0dp" android:paddingTop="@dimen/activity_vertical_margin" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" tools:context="com.woppi.woppi.samplelapp.HomeActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:inputType="textPersonName" android:ems="10" android:id="@+id/fromEditText" android:layout_weight="1" android:hint="@string/placeholder_choose_language" android:textColor="@android:color/white" android:textColorHint="@android:color/darker_gray" android:focusable="false" android:focusableInTouchMode="false" android:onClick="onSelectFromLanguage" /> </RelativeLayout>


De esta manera el trabajo para mí, puedo selec y copiar en el portapapeles, pero no puedo modificar o pegar.

android:enable="true" android:textIsSelectable="true" android:inputType="none"


Deja que tu Edittext sea

EditText editText;

editText.setKeyListener(null);

Funcionará pero simplemente no escucha las claves.

El usuario puede ver un cursor en el texto de edición.

Puedes probar editText.setEnabled(false);

Eso significa que el usuario no puede ver el cursor. Simplemente decir que se convertirá en TextView .


Esta combinación funcionó para mí:

<EditText ... > android:longClickable="false" android:cursorVisible="false" android:focusableInTouchMode="false" </EditText>


He enfrentado el mismo problema, pero después de la observación descubrí que android:editable="false" solo funciona cuando inputtype ( android:inputType="ANY_VALUE" ) no aparece en el Edittext.

Elimine inputType de EditText y use editable = false, está funcionando bien.


He intentado lo siguiente:

codeEditText.setInputType(InputType.TYPE_NULL); this.codeEditText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { pickCode(); } } }); this.codeEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pickCode(); } });

pero el problema era que si el texto de edición es el primero en el formulario, entonces recibe el foco y el código pickCode () que inicia una nueva actividad se llama de inmediato. Así que modifiqué el código de la siguiente manera y parece que funciona bastante bien (excepto que no puedo establecer el foco en la edición de texto pero no necesito hacerlo):

itemCodeEditText.setFocusable(false); this.itemCodeEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pickItem(); } });

Atentamente,

Comentarios bienvenidos,

John Goche


Hicieron "editables" en desuso, pero no proporcionaron una correspondiente de trabajo en inputType.

Por cierto, inputType = "none" tiene algún efecto? Usarlo o no no hace ninguna diferencia por lo que veo.

Por ejemplo, se dice que el editText predeterminado es una sola línea. Pero tienes que seleccionar un inputType para que sea una sola línea. Y si selecciona "ninguno", sigue siendo multilínea.


Podría usar android:editable="false" pero realmente le recomendaría que use setEnabled(false) ya que proporciona una pista visual al usuario de que el control no se puede editar. Todos los widgets deshabilitados utilizan la misma señal visual y la consistencia es buena.


Prueba este código. Está trabajando en mi proyecto, por lo que funcionará en su proyecto.

android:editable="false"


Prueba esto :

android:inputType="none"


Si desea hacer clic en él, pero no desea editarlo, intente:

android:focusable="false"


Si quieres hacerlo en código java solo usa esta línea para deshabilitarlo:

textView.setInputType( InputType.TYPE_NULL );

Y esto para habilitarlo:

textView.setKeyListener(new NumberKeyListener() { public int getInputType() { return InputType.TYPE_NULL; } protected char[] getAcceptedChars() { return new char[] {}; } });


Solo usa android:enabled="false" . Esto también dará una apariencia al EditText que hará que se vea no editable.


Traté de hacer:

<EditText android:id="@+id/txtDate" android:layout_width="140dp" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="10dp" android:layout_marginTop="2dp" android:clickable="false" android:cursorVisible="false" android:gravity="center" />

Lo que debería funcionar, pero para mí no lo hizo.

Terminé con este código:

txtDate.setKeyListener(null);

que funciona perfectamente


Tratar

.setInputType(InputType.TYPE_NULL);


Utilice este código simple:

textView.setKeyListener(null);

Funciona.

Editar: Para agregar KeyListener más tarde, haga lo siguiente

1: establecer la escucha clave para la etiqueta de textView

textView.setTag(textView.getKeyListener()); textView.setKeyListener(null);

2: obtener el oyente clave de la etiqueta y volver a establecerlo en textView

textView.setKeyListener((KeyListener) textView.getTag());


Utilizo EditText.setFocusable(false) y establezco verdadero nuevamente si quiero editar.


deshabilitar de XML (una línea):

android:focusable="false"

volver a habilitar desde Java, si es necesario (también una línea):

editText.setFocusableInTouchMode(true);


android: editable está en desuso así que usa inputType en su lugar.

<EditText android:id="@+id/editText_x" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="70" android:inputType="none" android:hint="@string/enter_x" />


editText.setEnabled(false);

y uso siguiente:

editText.setEnabled(true);