1

Я хочу изменить тип ввода текста редактирования на видимый, когда переключатель установлен.EditText введите тип текста пароль не изменяется

Switch a =(Switch) findViewById(R.id.switch1); 
    a.setText("visible"); 
    a.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked){ 
       EditText pass = (EditText) findViewById(R.id.pass); 
       pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
      }else{  
       EditText pass = (EditText) findViewById(R.id.pass); 
       pass.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
      } 
     } 
    }); 

Это работает, когда я перехожу на коммутаторе и делает пароль видимым, но когда я включаю его остается видимым и не меняется.

ответ

3
pass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) 

Попробуйте использовать это в своем заявлении, чтобы показать изменение типа пароля. Причина в том, что он должен указать, что класс ввода имеет тип текста.

+0

Как написать | в файле макета при использовании привязки данных. Я пробовал это: android: inputType = '@ {oneField.IsMasked == true? (InputType.TYPE_CLASS_TEXT | inputType.TYPE_TEXT_VARIATION_PASSWORD): InputType.TYPE_CLASS_TEXT} 'Он не компилируется –