2010-12-07 21 views
38

EditText için bir ipucu belirledim, şu anda ipucu görünürlüğü gitti. Bir kullanıcı yazmaya başladığında, imleç EditText'da göründüğünde ipucu metnini kaldırmak istiyorum, bir kullanıcı yazmaya başladığında değil. Bunu nasıl yapabilirim?Android EditText İpucu

<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"/> 

cevap

29

Bunu yapmak için doğrudan bir yol olup olmadığını bilmiyorum, ancak kod aracılığıyla bir geçici çözüm var: EditText onFocus olayını dinler ve odağı hızlandırır bulmaz ipucu ile hiçbir şey şey editText.setHint("") gibi:

Bu yapmanız gereken tam olarak ne olmayabilir, ama değildi için Sunit cevabı tamamlamak için, bir seçiciyi kullanabilirsiniz bu-

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

Bu, EditText'teki İpucu'nun varsayılan davranışı, odağa sahipken ve boş olmadığında kaybolur. –

+1

Bu en iyi yaklaşım değil, sadece textColorHint'e uygulanan bir seçiciyi kullanabilirsiniz. Cevabımı aşağıda kontrol edin. – aglour

52

Seçici kavramını kullanabilirsiniz. onFocus ipucunu kaldırır. TextView odağı varsa veya kullanıcı girişine sahip olmadığında

android:hint="Email" 

Yani (yani boş değil) ipucu göstermez.

+1

Bu benim daha çok uygun bir seçenek görünüyor! –

+3

Maalesef, yanlış. elemanları sadece çekmece ve renkler için kullanılabilir; dizeleri değil. – Devunwired

+1

Aslında DOES çalışır. Sadece denedim, thx! – Mike6679

16

gibi bir şey olabilir text string ama textColorHint.

android:textColorHint="@color/text_hint_selector" 

Ve text_hint_selector olmalıdır: Sen EditText bu niteliğini de eklemeniz gerekir

<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

Çok akıllı cevap: D – berserk

+0

neden @ color/xxx ve @ drawable/xxx değil? – behelit

+2

@behelit textColorHint bir renk alır, çekilemez, bu yüzden seçicinin değil, renk klasöründe olması gerekir. – aglour

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

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

İpucu. iyi bir cevap, sadece bir kod dökümüdür. A) diğerlerine yardımcı olmak istiyorsanız, en azından bir miktar açıklama yapmalısınız B) cevabınız için itibar kazanın – GhostCat