1

我按照这里TextInputEditText的建议使用 a让用户将文本添加到特定长度。

但是,我希望当TextInputEditText视图获得焦点时,提示应该消失而不是在视图上方,如上述教程中所示。在这个答案中,描述的解决方案是针对 a 的EditText,它只是让提示变得透明。但是,对于 a TextInputEditText,即使我在接收焦点时使提示透明,它仍然会占用视图上方的空间。

有没有办法在TextInputEditText静态接收焦点时将其删除?通过 很容易做到这一点OnFocusChangeListener,但我希望在编译时做到这一点。

4

6 回答 6

2

尝试在 EditText 上设置焦点更改侦听器,并在焦点为真时以编程方式隐藏提示,并在焦点为假且文本为空时再次显示提示。

于 2018-07-05T12:01:51.407 回答
1

从下面的帖子中尝试这个 如何在触摸edittext时使提示消失?

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            myEditText.setHint("");
        else
            myEditText.setHint("Your hint");
    }
});
于 2018-07-05T12:13:57.857 回答
1

如果你想消失在焦点上,试试这个:

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) {

        }
    });
于 2018-07-05T12:19:01.037 回答
1

只需添加:-

从下面的帖子中尝试这个如何在触摸edittext时使提示消失?

edittxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            edittxt.setHint("");
        else
            edittxt.setHint("hint");
    }
});
于 2020-12-03T09:12:19.130 回答
0

尝试在java中设置EditText提示,当你点击EditText时它会自动隐藏。

edtPassword.setHint(getString(R.string.YOUR_HINT));
于 2020-12-01T05:03:57.790 回答
0

对于那些有双重提示的人TextInputLayout,请参阅TextInputLayout 和 EditText 双重提示问题。我们需要将提示设置为TextInputLayout,而不是TextInputEditText

editText.setOnFocusChangeListener { _, hasFocus ->
    inputLayout.hint = if (hasFocus) {
        ""
    } else {
        getString(R.string.some_text)
    }
}
于 2021-11-11T13:51:24.750 回答