在我的应用程序中,我有一个EditText,其默认输入类型设置为android:inputType="textPassword"默认。它的右侧有一个复选框,选中该复选框时,将该编辑文本的输入类型更改为普通纯文本。它的代码是
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
我的问题是,当复选框未选中时,它应该再次设置输入类型为密码。我用过-
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
但是,编辑文本中的文本仍然可见。令人惊讶的是,当我改变方向时,它会自动将输入类型设置为PASSWORD,其中的文本是项目符号(显示为密码)。
有办法实现吗?
从支持库v24.2.0开始。你可以很容易地做到这一点
你需要做的就是:
Add the design library to your dependecies
dependencies {
compile "com.android.support:design:25.1.0"
}
Use TextInputEditText in conjunction with TextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password_hint"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
passwordToggleEnabled属性将显示密码切换
在你的根布局中,不要忘记添加xmlns:app="http://schemas.android.com/apk/res-auto"
您可以使用以下方法自定义密码切换:
app:passwordToggleDrawable -可绘制的使用作为密码输入可见切换图标。
app:passwordToggleTint -用于密码输入可见切换的图标。
app:passwordToggleTintMode -用于应用背景色调的混合模式。
更多细节在TextInputLayout文档。
已添加密码可见切换功能以支持库版本24.2.0,使您可以直接从EditText切换密码,而不需要复选框。
您可以首先将支持库版本更新到24.2.0,然后在TextInputEditText上设置密码的inputType。下面是如何做到这一点:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
您可以在TextInputLayout的开发人员文档中获得有关新特性的更多信息。