После некоторой отладки я обнаружил, что проблема возникает, когда проект использовал material-components-android перед миграцией, и некоторые действия необходимо выполнить вручную:
TextInputLayout дочернее представление должно быть com.google.android.material.textfield.TextInputEditText вместо EditText или AppCompatEditText:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
TextInputLayout должен использовать android: theme и app: errorTextAppearance унаследовано от Widget.MaterialComponents.TextInputLayout.FilledBox
styles.xml:
<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
...
</style>
<style name="TextInputLayoutErrorAppearance" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
...
</style>
layout.xml
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextInputLayoutStyle"
app:errorEnabled="true"
app:errorTextAppearance="@style/TextInputLayoutErrorAppearance">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
Если у вас есть переключатель типа ввода пароля app: passwordToggleEnabled и app: passwordToggleTint необходимо заменить на app: endIconMode = "password_toggle"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
app:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>