bri*_*ian 28 android android-edittext
我使用EditText输入密码.还有一个CheckBox来显示密码.以下功能是部分:
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
Run Code Online (Sandbox Code Playgroud)
检查时,显示密码.但是当它没有被检查时,它确实显示了星星.如何在未选中cb的情况下修改它以显示星标?
jos*_*hus 62
我不确切知道具体细节,但这段代码应该有效:
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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
129 是设置时设置的输入类型 android:inputType="textPassword"
编辑:
如@ user370305的回答中提到的那样,129当你这样做时,是按位或操作的值
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Run Code Online (Sandbox Code Playgroud)
use*_*305 46
这不是答案,
已经给出并接受的答案..
我只想澄清一下 129
password.setInputType(129);
Run Code Online (Sandbox Code Playgroud)
实际上是,
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Run Code Online (Sandbox Code Playgroud)
'|' 不是管道,它是一个bitwise OR.它需要两个二进制数,如果其中任何一个相等的值是1,
这与输入类型有何关系:每个InputTypes实际上只是整数.
TYPE_CLASS_TEXT is 1,和TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000).
bitwise OR对他们执行:
00000001
10000000
------------
10000001 which is 129.
Run Code Online (Sandbox Code Playgroud)
尝试输入input.setInputType(129);,你会发现它会起作用.:)
Jos*_*seF 15
我认为你使用的是错误的功能.我这样做并完美地工作:
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());
}
}
});
Run Code Online (Sandbox Code Playgroud)
小智 7
这可能会帮助你交配
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
// show password
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
// hide password
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
Run Code Online (Sandbox Code Playgroud)