首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以编程方式将密码的输入类型从EditText更改为NORMAL,反之亦然

以编程方式将密码的输入类型从EditText更改为NORMAL,反之亦然
EN

Stack Overflow用户
提问于 2012-03-27 23:26:23
回答 17查看 213.2K关注 0票数 209

在我的应用程序中,我有一个默认输入类型设置为android:inputType="textPassword"EditText。它的右侧有一个CheckBox,选中后,它会将该EditText的输入类型更改为普通纯文本。其代码为

代码语言:javascript
复制
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

我的问题是,当CheckBox未选中时,它应该再次将输入类型设置为PASSWORD。我已经用过了-

代码语言:javascript
复制
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

但是,该edittext中的文本仍然可见。令人惊讶的是,当我更改方向时,它自动将输入类型设置为PASSWORD,其中的文本显示为项目符号(显示为密码)。

有什么方法可以做到这一点吗?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2012-03-28 00:14:31

以编程方式向该EditText添加一个额外的属性,就完成了:

代码语言:javascript
复制
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

对于数字密码(pin):

代码语言:javascript
复制
password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

此外,请确保光标位于EditText中文本的末尾,因为当您更改输入类型时,光标将自动设置为起始点。因此,我建议使用以下代码:

代码语言:javascript
复制
et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());

在使用数据绑定时,您可以使用以下代码:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
票数 385
EN

Stack Overflow用户

发布于 2013-10-01 14:29:14

使用此代码将密码更改为文本,反之亦然

代码语言:javascript
复制
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

票数 61
EN

Stack Overflow用户

发布于 2015-12-09 14:24:03

代码语言:javascript
复制
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());       
                }
            }
        });
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9892617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档