how to make hint disappear when edittext is touched?
In my application in android are many EditText fields. And I ran into a problem with hint. It is not disappearing when EditText is focused, but it disappears when I start to write something. How can this problem be fixed? Because I need the hint to disappear when the EditText field is touched.
It is for example:
<EditText
android:layout_width="260dp"
android:layout_height="30dp"
android:ems="10"
android:inputType="text"
android:id="@+id/driv_lic_num_reg"
android:hint="@string/driver_license_numb"
android:textColor="@color/black"
android:textColorHint="@color/grey_hint"
android:background="@drawable/input_field_background"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_margin="2dp"
android:textCursorDrawable="@color/black"
android:textSize="15dp"
android:paddingLeft="10dp"
android:nextFocusDown="@+id/pass_reg"
android:imeOptions="actionNext"
android:maxLines="1"
android:maxLength="50"
android:focusableInTouchMode="true"/>
You can also custom your XML code by using Selector. Here is an example code.
Create a selector. In file selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@android:color/transparent" />
<item android:color="@color/gray" />
</selector>
In your view
android:textColorHint="@drawable/selector"
Hint only disappears when you type in any text, not on focus. I don't think that there is any automatic way to do it, may be I am wrong. However, as a workaround I use the following code to remove hint on focus in EditText
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
myEditText.setHint("");
else
myEditText.setHint("Your hint");
}
});
Here's my solution, where the hint disappear when user focus editText and appears again when focus changes to other place if the edittext is still empty:
editText.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
editText.setHint("");
return false;
}
});
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
editText.setHint("Hint");
}
}
});
hope this helps someone