sollten Dieser Code machen, was Sie wollen:
final EditText editText = (EditText) findViewById(R.id.edit_query);
final CharSequence rememberHint = editText.getHint();
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (!b && TextUtils.isEmpty(editText.getText())) {
editText.setHint(rememberHint);
} else {
editText.setHint("");
}
}
});
Ich benutze einen Hack, so, wenn wir auf unsere EditText konzentrieren, oder unfocus, aber es ist nicht leer, wir machen einen Hinweis darauf, und dann, wenn wir es nicht fokussieren und es leer ist, legen wir einen Hinweis zurück.
AKTUALISIERT
Sie können auch Text-Beobachter hinzufügen Hinweis auf seinen Platz zurück, wenn Sie den gesamten Text gelöscht, aber keine unfocus davon:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() != 0) {
editText.setHint("");
} else {
editText.setHint(rememberHint);
}
}
});
Dieser Zusatz liefert zu beantworten mehr Standardverhalten aus Benutzerperspektive.