在我的Android应用程序中,有一个editText密码,它通常会显示点而不是字母,在它下面有一个标有Show Password的复选框。首次选中该复选框时,将显示密码,但如果未选中,则不会重新隐藏。我将状态从“开始时隐藏”切换为“开始时显示”,并且复选框的第一个取消选中已隐藏,但随后的单击不会取消隐藏。唯一涉及此的代码是:
public void chkShowKey_click ( View v ) {
if ( showKey.isChecked ( ) ) {
txtPassKey.setInputType ( 144 );
} else {
txtPassKey.setInputType ( 128 );
}
}
怎么了? isChecked()
是否在if语句检查值之前不变?
当我尝试:
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { //NOW USE THE BOOLEAN TO CHECK IF CHECKED } } );
使用此代码进行进一步测试
chkShowKey.setOnCheckedChangeListener ( new CompoundButton.OnCheckedChangeListener ( ) {
@Override
public void onCheckedChanged ( CompoundButton buttonView, boolean isChecked ) {
if ( isChecked ) {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_NORMAL );
FancyToast.makeText(MainActivity.this,"Show",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
} else {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
FancyToast.makeText(MainActivity.this,"Hide",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
//FancyToast.makeText(MainActivity.this,"Checkbox changed!",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
}
);
表明事件正在触发并且isChecked
正在更改,除txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
以外,其他所有功能均正常工作
答案 0 :(得分:2)
根据您的要求尝试以下代码。只需根据您的Checkbox ID进行更改即可。
复选框事件
<TextInput
keyboardType="numeric"/>
答案 1 :(得分:0)
您可以简单地设置一个setOnCheckedChangeListener,然后检查Click事件中是否选中了Checked并相应地处理editText
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
//NOW USE THE BOOLEAN TO CHECK IF CHECKED
}
}
);
如果您尝试显示和隐藏密码,请按照以下步骤操作
要显示或隐藏点而不是密码,请设置PasswordTransformationMethod:
yourEditText.setTransformationMethod(new PasswordTransformationMethod());
当然,您可以默认使用
在xml布局中的edittext元素中进行设置android:password
要重新显示可读密码,只需将null作为转换方法:
yourEditText.setTransformationMethod(null);