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

style - propiedades edittext android



Hacer EditText ReadOnly (19)

Establezca esto en el archivo EdiTextView xml

android:focusable="false"

Quiero hacer una vista EditText solo EditText . El XML para hacer este código parece ser android:editable="false" , pero quiero hacer esto en el código.

¿Cómo puedo hacer esto?


Esto funcionó para mí, teniendo en cuenta varias de las sugerencias anteriores. Hace que TextEdit sea enfocable, pero si el usuario hace clic o se enfoca, mostramos una lista de selecciones en una ventana emergente. (Estamos reemplazando el raro widget de Spinner). TextEdit xml es muy genérico ...

public void onCreate(Bundle savedInstanceState) { .... fEditState = (EditText) findViewById(R.id.state_edit); fEditState.setLongClickable(false); fEditState.setKeyListener(null); fEditState.setFocusable(true); fEditState.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { showStatesPopup(); } } }); fEditState.setOnClickListener(new Button.OnClickListener(){ public void onClick(View arg0) { showStatesPopup(); } }); .... } private void showStatesPopup() { // fPopupWindowStates instantiated in OnCreate() if (!fPopupWindowStates.isShowing()) { // show the list view as dropdown fPopupWindowStates.showAsDropDown(fEditState, -5, 0); } }


Esto funciona para mí:

EditText.setKeyListener(null);


Intenta usar

editText.setEnabled(false); editText.setClickable(false);


Intente anular el oyente onLongClick del texto de edición para eliminar el menú contextual:

EditText myTextField = (EditText)findViewById(R.id.my_edit_text_id); myTextField.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; } });


Lo mejor es usar TextView en TextView lugar.


No tuve ningún problema para hacer EditTextPreference de solo lectura, al usar:

editTextPref.setSelectable(false);

Esto funciona bien cuando se combina con el uso del campo ''resumen'' para mostrar campos de solo lectura (útil para mostrar información de la cuenta, por ejemplo). Actualizando los campos de resumen dinámicamente arrebatados de http://gmariotti.blogspot.com/2013/01/preferenceactivity-preferencefragment.html

private static final List<String> keyList; static { keyList = new ArrayList<String>(); keyList.add("field1"); keyList.add("field2"); keyList.add("field3"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); for(int i=0;i<getPreferenceScreen().getPreferenceCount();i++){ initSummary(getPreferenceScreen().getPreference(i)); } } private void initSummary(Preference p) { if (p instanceof PreferenceCategory) { PreferenceCategory pCat = (PreferenceCategory) p; for (int i = 0; i < pCat.getPreferenceCount(); i++) { initSummary(pCat.getPreference(i)); } } else { updatePrefSummary(p); } } private void updatePrefSummary(Preference p) { if (p instanceof ListPreference) { ListPreference listPref = (ListPreference) p; p.setSummary(listPref.getEntry()); } if (p instanceof EditTextPreference) { EditTextPreference editTextPref = (EditTextPreference) p; //editTextPref.setEnabled(false); // this can be used to ''gray out'' as well editTextPref.setSelectable(false); if (keyList.contains(p.getKey())) { p.setSummary(editTextPref.getText()); } } }


Por favor use este código ..

Edittext.setEnabled(false);


Si setEnabled(false) , su editText se vería deshabilitado (gris, etc.). Es posible que no desee cambiar el aspecto visual de su editor.

Una forma menos intrusiva sería usar setFocusable(false) .

Creo que esto responde a su pregunta más cerca de su intención inicial.


Si solo desea poder copiar texto del control pero no poder editarlo, puede utilizar un TextView en su lugar y establecer el texto es seleccionable .

código:

myTextView.setTextIsSelectable(true); myTextView.setFocusable(true); myTextView.setFocusableInTouchMode(true); // myTextView.setSelectAllOnFocus(true);

xml:

<TextView android:textIsSelectable="true" android:focusable="true" android:focusableInTouchMode="true" ... /> <!--android:selectAllOnFocus="true"-->


La documentación de setTextIsSelectable dice:

Cuando llama a este método para establecer el valor de textIsSelectable, establece los indicadores enfocables, focusableInTouchMode, hace clic y longClickable en el mismo valor ...

Sin embargo, tuve que establecer de forma explícita el modo interactivo de EnTouchMode para que funcione con la entrada táctil.


Usa este código:

editText.setEnabled(false); editText.setTextColor(ContextCompat.getColor(context, R.color.black);

La desactivación de EditText proporciona un aspecto y un comportamiento de solo lectura, pero también cambia el color del texto a gris, por lo que se necesita configurar su color de texto.


escribir estas dos líneas es más que suficiente para tu trabajo.

yourEditText.setKeyListener(null); yourEditText.setEnabled(false);


esta es mi implementación (un poco larga, ¡pero útil para mí!): con este código puedes hacer EditView de solo lectura o normal. incluso en estado de solo lectura, el usuario puede copiar el texto. puede cambiar el fondo para que se vea diferente de un EditText normal.

public static TextWatcher setReadOnly(final EditText edt, final boolean readOnlyState, TextWatcher remove) { edt.setCursorVisible(!readOnlyState); TextWatcher tw = null; final String text = edt.getText().toString(); if (readOnlyState) { tw = new TextWatcher(); @Override public void afterTextChanged(Editable s) { } @Override //saving the text before change public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override // and replace it with content if it is about to change public void onTextChanged(CharSequence s, int start,int before, int count) { edt.removeTextChangedListener(this); edt.setText(text); edt.addTextChangedListener(this); } }; edt.addTextChangedListener(tw); return tw; } else { edt.removeTextChangedListener(remove); return remove; } }

El beneficio de este código es que, EditText se muestra como EditText normal, pero el contenido no es modificable. El valor de retorno debe mantenerse como una variable para que uno pueda revertir desde el estado de solo lectura a la normal.

para hacer un EditText de solo lectura, simplemente ponlo como:

TextWatcher tw = setReadOnly(editText, true, null);

y para hacerlo normal use tw de la declaración anterior:

setReadOnly(editText, false, tw);


establecido en XML

android:inputType="none"


En uso de XML

android:editable="false"

Ejemplo:

<EditText android:id="@+id/EditText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:editable="false" />


android: editable = "false" ha sido depreciado. Por lo tanto, no puede usarlo para hacer que el texto de edición sea solo de lectura.

Lo he hecho usando la solución de abajo. Aquí he usado

android: inputType = "none"

android: textIsSelectable = "true"

android: focusable = "falso"

Pruébalo :)

<EditText android:id="@+id/et_newsgpa_university" android:layout_height="wrap_content" android:layout_width="match_parent" android:hint="@string/hint_educational_institute" android:textSize="@dimen/regular_text" android:inputType="none" android:textIsSelectable="true" android:focusable="false" android:maxLines="1" android:imeOptions="actionNext"/>


android:editable

Si se establece, especifica que este TextView tiene un método de entrada. Será textual a menos que se especifique lo contrario. Para TextView , esto es falso por defecto. Para EditText , es verdadero por defecto.

Debe ser un valor boolean , true o false .

Esto también puede ser una referencia a un recurso (en la forma @[package:]type:name ) o atributo de tema (en la forma ?[package:][type:]name ) que contiene un valor de este tipo.

Esto corresponde al símbolo de recurso de atributo global editable.

Métodos relacionados


editText.setEnabled(false); editText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) { return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; } } });

Esto te dará un filtro editable EditText. primero debe colocar el texto que desea en el campo editText y luego aplicar este filtro.


editText.setInputType(InputType.TYPE_NULL);

De acuerdo con los docs esto impide que se muestre el teclado virtual. También evita el pegado, permite el desplazamiento y no altera el aspecto visual de la vista. Sin embargo, esto también evita seleccionar y copiar el texto dentro de la vista.

Desde mi configuración de pruebas, setInputType a TYPE_NULL parece ser funcionalmente equivalente al android:editable="false" depreciado android:editable="false" . Además, android:inputType="none" parece no tener ningún efecto notable.