Cómo borrar un EditText al hacer clic?

En Android, ¿cómo puedo EditText un EditText cuando se hace clic en él?

Por ejemplo, si tengo un EditText con algunos caracteres, como 'Enter Name' , cuando el usuario hace clic en él estos caracteres desaparecen.

No estoy seguro si usted está después de esto, pero intente este XML:

 android:hint="Enter Name" 

Muestra ese texto cuando el campo de entrada está vacío, seleccionado o no seleccionado.

O si desea que haga exactamente lo que describió, asigne un onClickListener en el editText y establézcalo vacío con setText ().

¿Está buscando un comportamiento similar a la x que aparece en el lado derecho de los campos de texto en un iphone que borra el texto cuando se pulsa? Se llama clearButtonMode allí. A continuación se muestra cómo crear esa misma funcionalidad en una vista EditarTexto de Android:

 String value = "";//any text you are pre-filling in the EditText final EditText et = new EditText(this); et.setText(value); final Drawable x = getResources().getDrawable(R.drawable.presence_offline);//your x image, this one from standard android images looks pretty good actually x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight()); et.setCompoundDrawables(null, null, value.equals("") ? null : x, null); et.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (et.getCompoundDrawables()[2] == null) { return false; } if (event.getAction() != MotionEvent.ACTION_UP) { return false; } if (event.getX() > et.getWidth() - et.getPaddingRight() - x.getIntrinsicWidth()) { et.setText(""); et.setCompoundDrawables(null, null, null, null); } return false; } }); et.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { et.setCompoundDrawables(null, null, et.getText().toString().equals("") ? null : x, null); } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); 

Después de onclick de cualquier acción hacer debajo del paso

 ((EditText) findViewById(R.id.yoursXmlId)).setText(""); 

o

Escribe esto en archivo XML

 <EditText ---------- other stuffs ------ android:hint="Enter Name" /> 

Su funciona bien para mí. Espero a todos.

@ Respuesta de Harris es grande, lo he implementado como una subclase separada de EditText, que puede hacer más fácil de usar si su código ya agrega TextChangedListeners.

También, lo he ajustado de modo que, si usted utiliza ya cualquier compuesto Drawables, los deja intactos.

El código está aquí, para cualquiera que lo necesite:

 package com.companyname.your import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; public class ClearableEditText extends EditText { public String defaultValue = ""; final Drawable imgX = getResources().getDrawable(android.R.drawable.presence_offline ); // X image public ClearableEditText(Context context) { super(context); init(); } public ClearableEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } void init() { // Set bounds of our X button imgX.setBounds(0, 0, imgX.getIntrinsicWidth(), imgX.getIntrinsicHeight()); // There may be initial text in the field, so we may need to display the button manageClearButton(); this.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { ClearableEditText et = ClearableEditText.this; // Is there an X showing? if (et.getCompoundDrawables()[2] == null) return false; // Only do this for up touches if (event.getAction() != MotionEvent.ACTION_UP) return false; // Is touch on our clear button? if (event.getX() > et.getWidth() - et.getPaddingRight() - imgX.getIntrinsicWidth()) { et.setText(""); ClearableEditText.this.removeClearButton(); } return false; } }); this.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { ClearableEditText.this.manageClearButton(); } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); } void manageClearButton() { if (this.getText().toString().equals("") ) removeClearButton(); else addClearButton(); } void addClearButton() { this.setCompoundDrawables(this.getCompoundDrawables()[0], this.getCompoundDrawables()[1], imgX, this.getCompoundDrawables()[3]); } void removeClearButton() { this.setCompoundDrawables(this.getCompoundDrawables()[0], this.getCompoundDrawables()[1], null, this.getCompoundDrawables()[3]); } } 

Que se denomina sugerencia en android uso android: hint = "Enter Name"

Si desea tener texto en el texto de edición y eliminarlo como dice, pruebe:

  final EditText text_box = (EditText) findViewById(R.id.input_box); text_box.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus==true) { if (text_box.getText().toString().compareTo("Enter Text")==0) { text_box.setText(""); } } } }); 

Tenga cuidado al configurar el texto con un oyente onClick en el campo que está configurando el texto. Yo estaba haciendo esto y la configuración del texto a una cadena vacía. Esto hacía que el puntero llegara a indicar dónde estaba mi cursor, que normalmente desaparecerá después de unos segundos. Cuando no esperé a que se fuera antes de salir de mi página causando finish () para ser llamado, podría causar una pérdida de memoria y bloqueo de mi aplicación. Me tomó un tiempo para averiguar lo que estaba causando el accidente en este ..

De todas formas, recomendaría usar selectAll () en su oyente de clic en lugar de setText () si puede. De esta forma, una vez seleccionado el texto, el usuario puede comenzar a escribir y todo el texto anterior se borrará.

Pic del puntero sospechoso: http://i.stack.imgur.com/juJnt.png

// Para borrar cuando se hace clic en el botón Clear

FirstName = (EditText) findViewById (R.id.firstName);

  clear = (Button) findViewById(R.id.clearsearchSubmit); clear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.getId() == R.id.clearsearchSubmit); firstName.setText(""); } }); 

Esto ayudará a borrar las palabras clave equivocadas que usted ha escrito en tan en lugar de presionar backspace una y otra vez simplemente puede hacer clic en el botón para borrar everything.It trabajado para mí. Espero eso ayude

Código para borrar el campo de texto cuando se hace clic

 <EditText android:onClick="TextFieldClicked"/> public void TextFieldClicked(View view){ if(view.getId()==R.id.editText1); text.setText(""); } 
 ((EditText) findViewById(R.id.User)).setText(""); ((EditText) findViewById(R.id.Password)).setText(""); 

Para mí la forma más fácil … Crear un EditText público, por ejemplo "myEditText1"

 public EditText myEditText1; 

A continuación, conéctelo con el EditText que debería borrarse

 myEditText1 = (EditText) findViewById(R.id.numberfield); 

Después de eso, crear un vacío que reacciona a un clic en el EditText y dejar que despeje el texto dentro de él cuando su enfocado, por ejemplo

 @OnClick(R.id.numberfield) void textGone(){ if (myEditText1.isFocused()){ myEditText1.setText(""); } } 

Espero poder ayudarte, tener un buen día a todos

  • Cómo manejar evento onClick en imageSpan en editText?
  • MultiLine EditText en Android con el cursor empezando en la parte superior
  • Conexión de TextWatcher con un adaptador personalizado para filtrar texto a través de EditText
  • Fuga de memoria de Android EditText
  • Android: Multiline & No autosuggest en EditText
  • Android EditText en longPress: ArrayIndexOutOfBoundsException: length = 15; Index = 491
  • ¿Hay alguna manera de establecer la posición del cursor en EditText de izquierda a derecha 2dp
  • Cómo hacer que EditText no se enfoque al crear la actividad
  • EditText no escribirá en una sola línea
  • Extraer una línea de un EditText
  • Etiqueta en un cuadro de edición en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.