2010-12-07 11 views
38

EditTextのヒントを設定しましたが、現在のところヒントの可視性はなくなりました。ユーザーが入力を開始すると、ユーザーが入力を開始したときではなく、EditTextにカーソルが表示されているときにヒントテキストを削除します。どうやってやるの?Android EditTextヒント

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

答えて

29

これを直接行う方法があるかどうかわかりませんが、確かにコードによる回避策があります:onFocusイベントがEditTextであることを確認し、フォーカスが得られるとすぐに、ヒントをeditText.setHint("")のようなものとは何もありません:

これは、あなたがしなければならない正確に何ではないかもしれないが、それはSUnitはの答えを完了するにはthis-

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

EditTextのヒントのデフォルトの動作が、フォーカスを持っていて空でないときに消えるため、これは不要です。 –

+1

これは最善の方法ではありません。単にtextColorHintに適用されたセレクタを使用することができます。下の私の答えをチェックしてください。 – aglour

52

セレクタの概念を使用できます。 onFocusはヒントを削除します。

android:hint="Email" 

だからTextViewにフォーカスがある、またはユーザ入力(すなわち、空ではない)ヒントが表示されませんを有しています。

+1

これは私よりもはるかに適切なオプションを探します! –

+3

残念ながら、間違っています。 要素は、ドロウアブルとカラーの場合にのみ使用できます。文字列ではありません。 – Devunwired

+1

実際には動作します。ちょうどそれを試して、thx! – Mike6679

16

のようなものであってもよいし、あなたがないように、セレクタを使用することができますテキスト文字列ではなく、textColorHint。 あなたのEditTextにこの属性を追加する必要があります。

android:textColorHint="@color/text_hint_selector" 

をそして、あなたのtext_hint_selectorは次のようになります。

<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

非常にスマートな答え:D – berserk

+0

@ drawable/xxxではなく、なぜ@ color/xxxですか? – behelit

+2

@behelit textColorHintはドロウアブルではなく、カラーを受け取るので、セレクタはドロウアブルではなくカラーフォルダになければなりません。 – aglour

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

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

ヒント。良い答えは単なるコードのダンプ以上のものです。あなたはA)他の人に役立つことを意図しているならば、少なくとも少しの説明を提供すべきである。B)あなたの答えに対する評判を得る – GhostCat

関連する問題