2010-12-07 16 views
38

He establecido una pista para un EditText, actualmente la visibilidad de la pista se ha ido. Cuando un usuario comienza a escribir, quiero eliminar el texto de sugerencia, cuando el cursor está visible en el EditText, no en el momento en que un usuario comienza a escribir. ¿Cómo puedo hacer eso?Android EditText Sugerencia

<EditText 
android:paddingLeft="10dp" 
android:background="@drawable/edittextbg" 
android:layout_marginLeft="4dp" 
android:layout_marginTop="7dp" 
android:gravity="left" 
android:id="@+id/Photo_Comments" 
android:layout_width="150dip" 
android:maxLines="1" 
android:hint="Write Caption" 
android:maxLength="50" 
android:singleLine="true" 
android:maxWidth="100dip" 
android:layout_height="wrap_content"/> 

Respuesta

29

No sé si una forma directa de hacer esto está disponible o no, pero seguramente hay una solución mediante el código: escuche el evento enFocus de EditText, y tan pronto como se enfoque, configure la sugerencia para que sea nada con algo como editText.setHint(""):

Esto puede no ser exactamente lo que tiene que hacer, pero puede ser algo como esto:

myEditText.setOnFocusListener(new OnFocusListener(){ 
    public void onFocus(){ 
    myEditText.setHint(""); 
    } 
}); 
+4

Esto no es necesario ya que el comportamiento predeterminado de la sugerencia en EditText desaparecerá cuando tenga foco y no esté vacío. –

+1

Este no es el mejor enfoque, solo puede usar un selector aplicado a textColorHint. Verifique mi respuesta a continuación. – aglour

52

Puede utilizar el concepto de selector. onFocus elimina la sugerencia.

android:hint="Email" 

Así que cuando TextView tiene enfoque, o tiene la entrada del usuario (es decir, no vacío) de la pista no se mostrará.

+1

Esto se ve mucho opción apropiada que la mía! –

+3

Desafortunadamente, es incorrecto. elementos solo se pueden usar para dibujar y colores; no cuerdas. – Devunwired

+1

De hecho, funciona. ¡Lo intenté, gracias! – Mike6679

16

para completar la respuesta de Sunit, puede utilizar un selector, no a la cadena de texto pero a textColorHint. debe agregar este atributo en su EDITTEXT:

android:textColorHint="@color/text_hint_selector" 

Y su text_hint_selector debe ser:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:color="@android:color/transparent" /> 
    <item android:color="@color/hint_color" /> 
</selector> 
+1

Respuesta muy inteligente: D – berserk

+0

¿por qué es @ color/xxx y no @ drawable/xxx? – behelit

+2

@behelit textColorHint recibe un color, no un dibujante, por lo que el selector debe estar en la carpeta de colores, no en el dibujable. – aglour

1
et.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 

      et.setHint(temp +" Characters"); 
     } 
    }); 
+3

Sugerencia. una buena respuesta es más que solo un vuelco de código. Al menos deberías dar un poco de explicación si pretendes ser A) útil para los demás B) ganar reputación para tu respuesta – GhostCat