调用 TextInputLayout 的 setError() 时,不要将提示移动到顶部
Do not move hint to the top when calling setError() of TextInputLayout
我有一个带有 TextInputLayout 的布局文件:
<android.support.design.widget.TextInputLayout
android:id="@+id/fullname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
app:errorTextAppearance="@style/Error">
<EditText
android:id="@+id/fullnameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Full Name"
android:inputType="textEmailAddress"
android:padding="26dp"/>
</android.support.design.widget.TextInputLayout>
当我在 TextInputLayout 上调用 setError() 方法时,提示转到顶部,就好像 TextInputLayout 会获得焦点一样。
我想在设置错误时保持提示不变。它应该看起来像这样:
对如何构建此布局有任何想法吗?
您需要实现自己的 MyTextInputLayout
class 扩展自 TextInputLayout
。
其中 class 您将必须控制何时显示或不显示提示,覆盖出现错误时显示提示的自定义行为。
来自 SO 的另一个答案的良好起点:
您可以通过其他方式完成,您可以在 OnCreate()
上调用 setError()
mTextInputLayout = findViewById(R.id.fullname);
mTextInputLayout.setError("Enter Your Full Name");
当您想显示错误时,请执行此操作
mTextInputLayout.setErrorEnabled(true);
这将通过提示解决您的问题
if (mTextInputLayout.isErrorEnabled()){
mTextInputLayout.setHintEnabled(false);
}else {
mTextInputLayout.setHintEnabled(true);
}
我有一个带有 TextInputLayout 的布局文件:
<android.support.design.widget.TextInputLayout
android:id="@+id/fullname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
app:errorTextAppearance="@style/Error">
<EditText
android:id="@+id/fullnameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Full Name"
android:inputType="textEmailAddress"
android:padding="26dp"/>
</android.support.design.widget.TextInputLayout>
当我在 TextInputLayout 上调用 setError() 方法时,提示转到顶部,就好像 TextInputLayout 会获得焦点一样。
我想在设置错误时保持提示不变。它应该看起来像这样:
对如何构建此布局有任何想法吗?
您需要实现自己的 MyTextInputLayout
class 扩展自 TextInputLayout
。
其中 class 您将必须控制何时显示或不显示提示,覆盖出现错误时显示提示的自定义行为。
来自 SO 的另一个答案的良好起点:
您可以通过其他方式完成,您可以在 OnCreate()
setError()
mTextInputLayout = findViewById(R.id.fullname);
mTextInputLayout.setError("Enter Your Full Name");
当您想显示错误时,请执行此操作
mTextInputLayout.setErrorEnabled(true);
这将通过提示解决您的问题
if (mTextInputLayout.isErrorEnabled()){
mTextInputLayout.setHintEnabled(false);
}else {
mTextInputLayout.setHintEnabled(true);
}