Как убрать подсказку в TextInputEditText при получении фокуса

Я использую TextInputEditText, как предложено здесь, чтобы позволить пользователю добавлять текст до определенной длины.

Однако я хочу, чтобы, когда представление TextInputEditText получает фокус, подсказка исчезала, а не поднималась над представлением, как показано в вышеупомянутом руководстве. В этом ответе описано решение для EditText и это просто делает подсказку прозрачной. Однако для TextInputEditText, даже если я сделаю подсказку прозрачной при получении фокуса, она все равно будет занимать место над представлением.

Есть ли способ просто удалить его при получении фокуса в TextInputEditText статически? Это легко сделать через OnFocusChangeListener, но я хотел сделать это во время компиляции.


person Rajan Prasad    schedule 05.07.2018    source источник


Ответы (5)


Попробуйте установить прослушиватель изменения фокуса на EditText и программно скрыть подсказку, когда фокус истинен, и снова показать подсказку, если фокус ложен, а текст пуст.

person DennyDog    schedule 05.07.2018
comment
Можно сделать это динамически, да. Я хотел посмотреть, можно ли это сделать статически во время компиляции. Я отредактирую вопрос, чтобы отразить это. - person Rajan Prasad; 05.07.2018

попробуйте это из следующего сообщения , как сделать так, чтобы подсказка исчезла, когда текст редактирования трогал?

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            myEditText.setHint("");
        else
            myEditText.setHint("Your hint");
    }
});
person Joaquín    schedule 05.07.2018
comment
Можно сделать это динамически, да. Я хотел посмотреть, можно ли это сделать статически во время компиляции. Я отредактирую вопрос, чтобы отразить это. - person Rajan Prasad; 05.07.2018

Попробуйте это, если вы хотите исчезнуть в фокусе:

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

        }
    });
person Vijay    schedule 05.07.2018

попробуйте установить подсказку EditText в java, и она автоматически скроется, когда вы нажмете на EditText.

edtPassword.setHint(getString(R.string.YOUR_HINT));
person Rajneesh Kumar    schedule 01.12.2020

Просто добавьте: -

попробуйте это из следующего поста, как заставить подсказку исчезнуть при касании текста редактирования?

edittxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus)
            edittxt.setHint("");
        else
            edittxt.setHint("hint");
    }
});
person Riaz Ali Khan    schedule 03.12.2020