如何在接收焦点时消失 TextInputEditText 中的提示
How to disappear the hint in TextInputEditText on receiving focus
我正在按照建议使用 TextInputEditText
here 让用户添加特定长度的文本。
但是,我希望当 TextInputEditText
视图获得焦点时,提示应该消失而不是在视图上方,如上述教程中所示。在这个 answer 中,描述的解决方案是针对 EditText
的,它只是让提示变得透明。但是,对于 TextInputEditText
,即使我在接收焦点时使提示透明,它仍然会占据视图上方的 space。
有没有办法在 TextInputEditText
中接收焦点时静态删除它?通过 OnFocusChangeListener
很容易做到这一点,但我希望在编译时做到这一点。
尝试在 EditText 上设置焦点更改侦听器,并在焦点为真时以编程方式隐藏提示,如果焦点为假且文本为空则再次显示提示。
试试下面的 post
how to make hint disappear when edittext is touched?
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
myEditText.setHint("");
else
myEditText.setHint("Your hint");
}
});
如果你想在聚焦时消失,试试这个:
textInputEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasfocus) {
if (hasfocus) {
textInputLayout.setHint("test");
} else {
textInputLayout.setHint(null);
}
}
});
如果你想在打字时消失(如果你正在寻找这样的东西),请尝试下面的代码:
textInputEditText.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) {
if (TextUtils.isEmpty(textInputEditText.getText().toString())) {
textInputLayout.setHint("test");
} else {
textInputLayout.setHint(null);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
尝试在java中设置EditText提示,当您点击EditText时它会自动隐藏。
edtPassword.setHint(getString(R.string.YOUR_HINT));
只需添加:-
尝试以下方法 post 如何在触摸 edittext 时使提示消失?
edittxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
edittxt.setHint("");
else
edittxt.setHint("hint");
}
});
对于TextInputLayout
中有双重提示的人,请参阅。我们需要将提示设置为 TextInputLayout
,而不是 TextInputEditText
。
editText.setOnFocusChangeListener { _, hasFocus ->
inputLayout.hint = if (hasFocus) {
""
} else {
getString(R.string.some_text)
}
}
我正在按照建议使用 TextInputEditText
here 让用户添加特定长度的文本。
但是,我希望当 TextInputEditText
视图获得焦点时,提示应该消失而不是在视图上方,如上述教程中所示。在这个 answer 中,描述的解决方案是针对 EditText
的,它只是让提示变得透明。但是,对于 TextInputEditText
,即使我在接收焦点时使提示透明,它仍然会占据视图上方的 space。
有没有办法在 TextInputEditText
中接收焦点时静态删除它?通过 OnFocusChangeListener
很容易做到这一点,但我希望在编译时做到这一点。
尝试在 EditText 上设置焦点更改侦听器,并在焦点为真时以编程方式隐藏提示,如果焦点为假且文本为空则再次显示提示。
试试下面的 post how to make hint disappear when edittext is touched?
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
myEditText.setHint("");
else
myEditText.setHint("Your hint");
}
});
如果你想在聚焦时消失,试试这个:
textInputEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasfocus) {
if (hasfocus) {
textInputLayout.setHint("test");
} else {
textInputLayout.setHint(null);
}
}
});
如果你想在打字时消失(如果你正在寻找这样的东西),请尝试下面的代码:
textInputEditText.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) {
if (TextUtils.isEmpty(textInputEditText.getText().toString())) {
textInputLayout.setHint("test");
} else {
textInputLayout.setHint(null);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
尝试在java中设置EditText提示,当您点击EditText时它会自动隐藏。
edtPassword.setHint(getString(R.string.YOUR_HINT));
只需添加:-
尝试以下方法 post 如何在触摸 edittext 时使提示消失?
edittxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
edittxt.setHint("");
else
edittxt.setHint("hint");
}
});
对于TextInputLayout
中有双重提示的人,请参阅TextInputLayout
,而不是 TextInputEditText
。
editText.setOnFocusChangeListener { _, hasFocus ->
inputLayout.hint = if (hasFocus) {
""
} else {
getString(R.string.some_text)
}
}