我使用EditText输入密码。以及显示密码或不显示密码的CheckBox。下面的函数是这个部分:
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}当它检查时,它会显示密码。但如果没有勾选,它就会显示星形。如何在未勾选cb的情况下修改为显示星形?
发布于 2012-02-16 16:33:05
我不知道确切的细节,但这段代码应该可以工作:
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是执行逐位或操作时的值
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);发布于 2012-02-16 17:12:57
这不是一个答案,
答案已经给出并接受..
我只想澄清关于129的事情
password.setInputType(129);实际上,
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);'|‘不是管道,它是bitwise OR。它需要两个二进制数并且如果相等值的任一位是1,
这与输入类型有何关系:每个InputTypes实际上都只是int。TYPE_CLASS_TEXT is 1和TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000)。
对它们执行bitwise OR:
00000001
10000000
------------
10000001 which is 129.尝试输入input.setInputType(129);,您将看到它可以工作。:)
发布于 2013-10-02 02:40:24
我想你用错了函数。我做到了这一点,而且工作得很完美:
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());
}
}
});https://stackoverflow.com/questions/9307680
复制相似问题