密码切换图标文本输入布局覆盖错误图标
password toggle icon textinputlayout override error icon
-
android
-
android-textinputlayout
-
android-textinputedittext
-
material-components
-
material-components-android
我正在使用密码切换来显示和隐藏密码。而且我不想使用自定义可绘制对象。但是,当此编辑文本生成错误时,它会覆盖切换密码图标并且无法向该图标添加填充或边距。如果对此有任何解决方案,那将是一种乐趣。
这是我使用的代码:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColorHint="@color/white"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/white">
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:hint="@string/password"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLength="40"
android:maxLines="1"
android:textColor="@color/white"
android:textColorHint="@color/app_green_color" />
</com.google.android.material.textfield.TextInputLayout>
使用 TextInputEditText
而不是 EditText
。
<com.google.android.material.textfield.TextInputLayout
app:endIconMode="password_toggle"
app:endIconTint="@color/white"
...>
<com.google.android.material.textfield.TextInputEditText
android:inputType="textPassword"
../>
</com.google.android.material.textfield.TextInputLayout>
另外(但与问题无关)属性 app:passwordToggleEnabled="true"
和 app:passwordToggleTint="@color/white"
现在已弃用。使用 app:endIconMode
和 app:endIconTint
.
最好的方法。
将 id 分配给 textinputlayout 并将 setError 分配给 textinputlayout,而不是 edittext。喜欢:
<android.support.design.widget.TextInputLayout
android:id="@+id/tilSignUpPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:passwordToggleEnabled="true"
app:hintEnabled="false">
<EditText
android:id="@+id/etSignUpPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#a3a1a1"
android:inputType="textPassword"
android:drawableStart="@drawable/ic_password"
android:background="@drawable/edittext_bg"
android:layout_marginTop="3dp"
android:drawablePadding="20dp"
android:padding="10dp"
android:layout_weight="0.09"/>
</android.support.design.widget.TextInputLayout>
在Class中:
//your condition
.....
tilSignUpPassword.setError("Message")
.....
不要忘记在条件匹配后设置错误(null)。
将文本错误设置为某些内容时,应将 errorIconDrawable 设置为 null,这样它就不会覆盖切换密码图标。
像这样:
if (hasError) {
textInputLayout.error = "Error text"
textInputLayout.errorIconDrawable = null
}
我遇到了同样的问题。我正在使用 TextInputLayout 和
implementation 'com.google.android.material:material:1.2.1'
上面的任何答案都没有帮助我。正确的做法是:
<com.google.android.material.textfield.TextInputLayout
...
app:errorIconDrawable="@null">
<com.google.android.material.textfield.TextInputEditText
...
/>
android
android-textinputlayout
android-textinputedittext
material-components
material-components-android
我正在使用密码切换来显示和隐藏密码。而且我不想使用自定义可绘制对象。但是,当此编辑文本生成错误时,它会覆盖切换密码图标并且无法向该图标添加填充或边距。如果对此有任何解决方案,那将是一种乐趣。 这是我使用的代码:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColorHint="@color/white"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/white">
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
android:hint="@string/password"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLength="40"
android:maxLines="1"
android:textColor="@color/white"
android:textColorHint="@color/app_green_color" />
</com.google.android.material.textfield.TextInputLayout>
使用 TextInputEditText
而不是 EditText
。
<com.google.android.material.textfield.TextInputLayout
app:endIconMode="password_toggle"
app:endIconTint="@color/white"
...>
<com.google.android.material.textfield.TextInputEditText
android:inputType="textPassword"
../>
</com.google.android.material.textfield.TextInputLayout>
另外(但与问题无关)属性 app:passwordToggleEnabled="true"
和 app:passwordToggleTint="@color/white"
现在已弃用。使用 app:endIconMode
和 app:endIconTint
.
最好的方法。 将 id 分配给 textinputlayout 并将 setError 分配给 textinputlayout,而不是 edittext。喜欢:
<android.support.design.widget.TextInputLayout
android:id="@+id/tilSignUpPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:passwordToggleEnabled="true"
app:hintEnabled="false">
<EditText
android:id="@+id/etSignUpPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#a3a1a1"
android:inputType="textPassword"
android:drawableStart="@drawable/ic_password"
android:background="@drawable/edittext_bg"
android:layout_marginTop="3dp"
android:drawablePadding="20dp"
android:padding="10dp"
android:layout_weight="0.09"/>
</android.support.design.widget.TextInputLayout>
在Class中:
//your condition
.....
tilSignUpPassword.setError("Message")
.....
不要忘记在条件匹配后设置错误(null)。
将文本错误设置为某些内容时,应将 errorIconDrawable 设置为 null,这样它就不会覆盖切换密码图标。
像这样:
if (hasError) {
textInputLayout.error = "Error text"
textInputLayout.errorIconDrawable = null
}
我遇到了同样的问题。我正在使用 TextInputLayout 和
implementation 'com.google.android.material:material:1.2.1'
上面的任何答案都没有帮助我。正确的做法是:
<com.google.android.material.textfield.TextInputLayout
...
app:errorIconDrawable="@null">
<com.google.android.material.textfield.TextInputEditText
...
/>