android - 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 中之外,是否有一个干净的解决方案?
解决方案
是的,当您启用 TextInputLayout 的 error 属性时,它总是会增加 View 的高度以显示错误(无论何时发生),这将导致其他 Views/ViewGroups 进一步向下推。
你可以做些什么来摆脱额外的空间,以编程方式设置错误。
例如,无论何时发生错误(或者如果您想设置错误),您都可以调用
setErrorEnabled(boolean value)
这样它也可以显示错误并将其他视图向下推(在其下方),如果错误消失(或者您想隐藏错误),那么您可以调用
setError("")
你需要传递一个空字符串,然后调用 setErrorEnabled(false),这样 textInputLayout 就会回到原来的位置。
推荐阅读
- javascript - 如何用 JS 图标替换文本?
- java - 在我的客户端没有收到 ObjectInputStream
- sql - 使用 ActiveRecord 语法从 Rails 中的连接表中选择或按列排序
- java - Java Jpanel 现在出现了
- python-3.x - Python 情节。看不到第一个子图标题
- javascript - 使用 math.random 生成图片
- c++ - 找不到使用 Eigen3 和 CMake eigen3/Eigen/Core' 文件构建 C++ 代码的问题
- rust - 是否存在接受可能失败的谓词的 Iter::find() 等效项?
- if-statement - 在 PugJS 上添加“数据属性”的可选链接
- web - 低功耗显示器的视频编解码器?