复选框只能使用一次?

时间:2019-01-24 18:54:27

标签: android android-checkbox android-textinputedittext

在我的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 } } );

我得到enter image description here

enter image description here

使用此代码进行进一步测试

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 );以外,其他所有功能均正常工作

2 个答案:

答案 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);