首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用EditText显示密码

使用EditText显示密码
EN

Stack Overflow用户
提问于 2012-02-16 16:14:46
回答 12查看 44.2K关注 0票数 30

我使用EditText输入密码。以及显示密码或不显示密码的CheckBox。下面的函数是这个部分:

代码语言:javascript
运行
复制
public void ShowPassword() {
    if (cb.isChecked()) {
        password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
    } else {
        password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
    }
}

当它检查时,它会显示密码。但如果没有勾选,它就会显示星形。如何在未勾选cb的情况下修改为显示星形?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-02-16 16:33:05

我不知道确切的细节,但这段代码应该可以工作:

代码语言:javascript
运行
复制
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(!isChecked) {
                    password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                } else {
                    password.setInputType(129);
                }
            }
        });

129是在设置android:inputType="textPassword"时设置的输入类型

编辑:

正如@user370305的答案中所提到的,129是执行逐位或操作时的值

代码语言:javascript
运行
复制
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
票数 67
EN

Stack Overflow用户

发布于 2012-02-16 17:12:57

这不是一个答案,

答案已经给出并接受..

我只想澄清关于129的事情

代码语言:javascript
运行
复制
password.setInputType(129);

实际上,

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

'|‘不是管道,它是bitwise OR。它需要两个二进制数并且如果相等值的任一位是1,

这与输入类型有何关系:每个InputTypes实际上都只是int。TYPE_CLASS_TEXT is 1TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000)

对它们执行bitwise OR

代码语言:javascript
运行
复制
00000001

10000000

------------

10000001 which is 129.

尝试输入input.setInputType(129);,您将看到它可以工作。:)

票数 49
EN

Stack Overflow用户

发布于 2013-10-02 02:40:24

我想你用错了函数。我做到了这一点,而且工作得很完美:

代码语言:javascript
运行
复制
passwordEditView = (EditText) rootView.findViewById(R.id.password);
final CheckBox showPasswordCheckBox = (CheckBox) rootView.findViewById(R.id.checkbox);
showPasswordCheckBox.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (showPasswordCheckBox.isChecked()){
            passwordEditView.setTransformationMethod(null);
        }else{
            passwordEditView.setTransformationMethod(new PasswordTransformationMethod());
       }
    }
});
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9307680

复制
相关文章

相似问题

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