首页 > 解决方案 > TextInputLayout, setError 增加高度

问题描述

我有一个简单的 TextInputLayout:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/tilPwd"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Passcode"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" >

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:singleLine="true" />

</com.google.android.material.textfield.TextInputLayout>

那我下面还有其他的看法。

问题是当我在 TextInputLayout 上设置错误时,高度会增加并推动下面的所有视图。我尝试了一种解决方法来设置一个空白的 helperText,但是在对讲时会读取空白的 helperText,这不是我想要的。

除了将 TextInputLayout 包装在具有设定高度的某个 ViewGroup 中之外,是否有一个干净的解决方案?

标签: androidaccessibilityandroid-textinputlayout

解决方案


是的,当您启用 TextInputLayout 的 error 属性时,它总是会增加 View 的高度以显示错误(无论何时发生),这将导致其他 Views/ViewGroups 进一步向下推。

你可以做些什么来摆脱额外的空间,以编程方式设置错误。

例如,无论何时发生错误(或者如果您想设置错误),您都可以调用

setErrorEnabled(boolean value) 

这样它也可以显示错误并将其他视图向下推(在其下方),如果错误消失(或者您想隐藏错误),那么您可以调用

setError("")

你需要传递一个空字符串,然后调用 setErrorEnabled(false),这样 textInputLayout 就会回到原来的位置。


推荐阅读