去除 TextInputLayout 中的浮动标签提示文本
Remove floating label hint text in TextInputLayout
有什么方法可以在用户单击文本字段时删除浮动标签(提示)?当我单击文本字段时,提示会自动移动到 editText 上方,但不会消失。我希望提示在用户单击文本字段并在其中输入一些文本时消失。
这里是 XML 代码:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="@android:color/white"
app:hintAnimationEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/edittext_background"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="15dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
</com.google.android.material.textfield.TextInputLayout>
app:hintEnabled="false"
只需将此添加到您的 TextInputLayout
。尽管顾名思义,它只是删除了浮动标签提示,但完整保留了 EditText 提示。
或者,您可以通过在代码中对 TextInputLayout 调用 setHintEnabled(false)
来获得相同的结果。
专业提示:如果禁用提示,您可能会看到 EditText 在 TextInputLayout 中未正确对齐。这是一个已知的问题。解决此问题的方法是在 EditText 中简单地添加一个 8dp 的顶部填充。 (Reference)
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/etPasswordLayout"
app:hintEnabled="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="@android:color/white"
app:hintAnimationEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/edittext_background"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="15dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
</com.google.android.material.textfield.TextInputLayout>
app:hintEnabled="false"
去除提示的浮动,不禁用提示。
删除 android:hint
并使用 app:placeholderText
<com.google.android.material.textfield.TextInputLayout
app:endIconMode="password_toggle"
app:placeholderText="Password"
..>
注意: 至少需要版本 1.2.0-alpha03
.
这个函数可以帮助你 (Kotlin)
fun hintRemover(textInputLayout: TextInputLayout, textInputEditText: TextInputEditText, text: String) {
textInputEditText.setOnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
textInputLayout.hint = null
}
else {
textInputLayout.hint = text
}
}
}
有什么方法可以在用户单击文本字段时删除浮动标签(提示)?当我单击文本字段时,提示会自动移动到 editText 上方,但不会消失。我希望提示在用户单击文本字段并在其中输入一些文本时消失。
这里是 XML 代码:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="@android:color/white"
app:hintAnimationEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/edittext_background"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="15dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
</com.google.android.material.textfield.TextInputLayout>
app:hintEnabled="false"
只需将此添加到您的 TextInputLayout
。尽管顾名思义,它只是删除了浮动标签提示,但完整保留了 EditText 提示。
或者,您可以通过在代码中对 TextInputLayout 调用 setHintEnabled(false)
来获得相同的结果。
专业提示:如果禁用提示,您可能会看到 EditText 在 TextInputLayout 中未正确对齐。这是一个已知的问题。解决此问题的方法是在 EditText 中简单地添加一个 8dp 的顶部填充。 (Reference)
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/etPasswordLayout"
app:hintEnabled="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="@android:color/white"
app:hintAnimationEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/edittext_background"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="15dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
</com.google.android.material.textfield.TextInputLayout>
app:hintEnabled="false"
去除提示的浮动,不禁用提示。
删除 android:hint
并使用 app:placeholderText
<com.google.android.material.textfield.TextInputLayout
app:endIconMode="password_toggle"
app:placeholderText="Password"
..>
注意: 至少需要版本 1.2.0-alpha03
.
这个函数可以帮助你 (Kotlin)
fun hintRemover(textInputLayout: TextInputLayout, textInputEditText: TextInputEditText, text: String) {
textInputEditText.setOnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
textInputLayout.hint = null
}
else {
textInputLayout.hint = text
}
}
}