如何在接收焦点时消失TextInputEditText中的提示

时间:2018-07-05 11:48:17

标签: android android-edittext android-textinputedittext

我正在使用here的建议TextInputEditText,以允许用户添加特定长度的文本。

但是,我希望当TextInputEditText视图获得焦点时,提示应该消失而不是移到视图上方,如上述教程中所示。在此answer中,描述的解决方案适用于EditText,它只是使提示变得透明。但是,对于TextInputEditText,即使我在获得焦点时使提示透明,它仍将占据视图上方的空间。

有没有一种方法可以静态地将其移至TextInputEditText中的焦点上?通过OnFocusChangeListener可以很容易地做到这一点,但是我一直希望在编译时做到这一点。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

尝试以下文章 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");
    }
});

答案 2 :(得分: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) {

        }
    });

答案 3 :(得分:0)

尝试在Java中设置EditText提示,当您单击EditText时,它将自动隐藏。

edtPassword.setHint(getString(R.string.YOUR_HINT));

答案 4 :(得分:0)

只需添加:-

从以下文章中尝试一下如何在触摸edittext时使提示消失?

edittxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            edittxt.setHint("");
        else
            edittxt.setHint("hint");
    }
});