在我的应用程序中,我有一个默认输入类型设置为android:inputType="textPassword"
的EditText
。它的右侧有一个CheckBox
,选中后,它会将该EditText的输入类型更改为普通纯文本。其代码为
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
我的问题是,当CheckBox未选中时,它应该再次将输入类型设置为PASSWORD。我已经用过了-
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
但是,该edittext中的文本仍然可见。令人惊讶的是,当我更改方向时,它自动将输入类型设置为PASSWORD,其中的文本显示为项目符号(显示为密码)。
有什么方法可以做到这一点吗?
发布于 2012-03-28 00:14:31
以编程方式向该EditText
添加一个额外的属性,就完成了:
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
对于数字密码(pin):
password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
此外,请确保光标位于EditText
中文本的末尾,因为当您更改输入类型时,光标将自动设置为起始点。因此,我建议使用以下代码:
et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());
在使用数据绑定时,您可以使用以下代码:
<data>
<import type="android.text.InputType"/>
.
.
.
<EditText
android:inputType='@{someViewModel.isMasked ?
(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) :
InputType.TYPE_CLASS_TEXT }'
如果使用Kotlin:
password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
发布于 2013-10-01 14:29:14
使用此代码将密码更改为文本,反之亦然
mCbShowPwd.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
// hide password
mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
// show password
mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
有关完整的示例代码,请参阅http://www.codeproject.com/Tips/518641/Show-hide-password-in-a-edit-text-view-password-ty
发布于 2015-12-09 14:24:03
Checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is checked.
if (isChecked) {
//password is visible
PasswordField.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
//password gets hided
passwordField.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
https://stackoverflow.com/questions/9892617
复制相似问题