TextInputLayout 聚焦时出现 2 个提示
2 hints appearing when TextInputLayout is focused
我在使用 TextInputLayout 时遇到了一些问题。
当 TextInputLayout 获得焦点时,我看到提示文本漂浮在文本字段上方并且也停留在文本字段上。附上图片:
当我在字段中键入内容时,文本与文本字段上的提示重叠。
这是我的 TextInputLayout
的 XML
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:id="@+id/email"
android:hint="hint">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
我正在使用 android material 组件库,如下所示:
implementation 'com.google.android.material:material:1.0.0'
当 TextInputLayout 聚焦在上面有文本时,如何让提示隐藏?
这是完整的布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.login.login.LoginFragment">
<ImageView
android:layout_width="279dp"
android:layout_height="289dp"
android:src="@drawable/react"
android:id="@+id/imageView" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
android:layout_marginTop="24dp" app:layout_constraintTop_toTopOf="parent"
android:contentDescription="@string/vitrix_logo"/>
<com.google.android.material.button.MaterialButton
android:text="@string/login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/loginButton"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:contentDescription="@string/click_to_login_to_the_app"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginBottom="16dp" app:layout_constraintBottom_toTopOf="@+id/createNewAccount"/>
<com.google.android.material.button.MaterialButton
android:text="@string/create_account"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/createNewAccount"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" app:layout_constraintHorizontal_bias="0.0"
android:layout_marginBottom="32dp" app:layout_constraintBottom_toBottomOf="parent"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:id="@+id/email"
android:hint="hint">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
基础activity布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity">
<fragment
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:navGraph="@navigation/navigation_graph" app:defaultNavHost="true"
android:id="@+id/fragment" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"/>
达到您预期结果的最佳方式:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Full name">
<android.support.design.widget.TextInputEditText
android:id="@+id/etFullName"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.TextInputLayout>
尝试使用 android.support.design.widget.TextInputLayout 而不是 com.google.android.material.textfield.TextInputLayout。
试试这个,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_mobnumber_box"
android:layout_width="320dp"
android:layout_gravity="center"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input_mobnumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:hint="Mobile Number" />
</android.support.design.widget.TextInputLayout>
原来我只是加载了片段两次。
我一次使用导航组件加载到片段中,第二次从使用 Activity + 片段模板时获得的主要 activity auto-generated 样板代码加载。
要解决此问题,只需从主 activity 中删除 FragmentTrancaction.replace 并让导航组件为您加载片段。
我在使用 TextInputLayout 时遇到了一些问题。
当 TextInputLayout 获得焦点时,我看到提示文本漂浮在文本字段上方并且也停留在文本字段上。附上图片:
当我在字段中键入内容时,文本与文本字段上的提示重叠。
这是我的 TextInputLayout
的 XML <com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:id="@+id/email"
android:hint="hint">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
我正在使用 android material 组件库,如下所示:
implementation 'com.google.android.material:material:1.0.0'
当 TextInputLayout 聚焦在上面有文本时,如何让提示隐藏?
这是完整的布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.login.login.LoginFragment">
<ImageView
android:layout_width="279dp"
android:layout_height="289dp"
android:src="@drawable/react"
android:id="@+id/imageView" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
android:layout_marginTop="24dp" app:layout_constraintTop_toTopOf="parent"
android:contentDescription="@string/vitrix_logo"/>
<com.google.android.material.button.MaterialButton
android:text="@string/login"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/loginButton"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:contentDescription="@string/click_to_login_to_the_app"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginBottom="16dp" app:layout_constraintBottom_toTopOf="@+id/createNewAccount"/>
<com.google.android.material.button.MaterialButton
android:text="@string/create_account"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/createNewAccount"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" app:layout_constraintHorizontal_bias="0.0"
android:layout_marginBottom="32dp" app:layout_constraintBottom_toBottomOf="parent"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" android:id="@+id/email"
android:hint="hint">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
基础activity布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity">
<fragment
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:navGraph="@navigation/navigation_graph" app:defaultNavHost="true"
android:id="@+id/fragment" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"/>
达到您预期结果的最佳方式:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Full name">
<android.support.design.widget.TextInputEditText
android:id="@+id/etFullName"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.TextInputLayout>
尝试使用 android.support.design.widget.TextInputLayout 而不是 com.google.android.material.textfield.TextInputLayout。
试试这个,
<android.support.design.widget.TextInputLayout
android:id="@+id/input_mobnumber_box"
android:layout_width="320dp"
android:layout_gravity="center"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input_mobnumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:hint="Mobile Number" />
</android.support.design.widget.TextInputLayout>
原来我只是加载了片段两次。
我一次使用导航组件加载到片段中,第二次从使用 Activity + 片段模板时获得的主要 activity auto-generated 样板代码加载。
要解决此问题,只需从主 activity 中删除 FragmentTrancaction.replace 并让导航组件为您加载片段。