Заполнение текста ошибки TextInputLayout

Я использую TextInputLayout с AppCompatEditText, имеющим собственный фон на основе формы xml для AppCompatEditText. Всякий раз, когда я устанавливаю какую-либо ошибку, строка ошибки начинается с начала макета. Есть ли способ добавить дополнение к этой строке ошибки.

введите описание изображения здесь


person BST Kaal    schedule 21.01.2016    source источник
comment
см. stackoverflow.com/questions/32609710/   -  person sasikumar    schedule 21.01.2016
comment
Не могли бы вы обновить этот вопрос кодом, который вы пробовали?   -  person Kae10    schedule 21.01.2016
comment
Использование setError(null)   -  person BST Kaal    schedule 21.01.2016
comment
Удалите фоновое изображение в EditText, это решит вашу проблему. Фоновое изображение в EditText Создайте эту проблему   -  person Mahesh Suthar    schedule 17.02.2016


Ответы (3)


Вы можете ссылаться на ошибку TextView, используя:

TextView textView = (TextView) inputLayout.findViewById(android.support.design.R.id
            .textinput_error);

Затем вы можете получить параметры макета для работы.

person Boris Kozyrev    schedule 31.05.2017
comment
рискованный взлом — это риск. в то же время, я не думаю, что id изменится в ближайшее время - person Aba; 20.05.2018
comment
Имейте в виду, что текстовое представление ошибки создается только при отображении ошибки, поэтому вам нужно изменить параметры после отображения ошибки в вашем TextInputLayout. - person Almighty; 22.05.2019

Я изо всех сил пытался решить эту проблему, и это то, что сработало для меня:

Удаление заполнения родительского элемента моего текстового представления ошибки

Используя это решение, я смог найти текстовое представление ошибки (потому что мне нужно было добавить к нему значок), но не смог избавиться заполнения, поэтому после нескольких попыток я понял, что TextInputLayout имеет 2 дочерних элемента, поэтому удаление заполнения от второго дочернего элемента сделало свое дело, и просто чтобы быть уверенным, я удалил его также из первого

Используя расширения Kotlin, я нашел чистое решение

/**
 * TextInputLayout
 */
fun TextInputLayout.removePadding() {
    for (i in 0 until this.childCount) {
        this.getChildAt(i).setPadding(0)
    }
}

Вы можете сделать это и в java, используя ту же логику.

введите здесь описание изображения

person einschneidend    schedule 13.05.2021

person    schedule
comment
для внутреннего EditText не используйте marginLeft и marginRight - person Mallikarjuna; 05.03.2017