Программно изменить тип ввода EditText с ПАРОЛЯ на НОРМАЛЬНЫЙ и наоборот - PullRequest
170 голосов
/ 27 марта 2012

В моем приложении у меня есть EditText, чей тип ввода по умолчанию установлен на android:inputType="textPassword" по умолчанию.Он имеет CheckBox справа, то есть, когда отмечен, изменяет тип ввода этого EditText на NORMAL PLAIN TEXT.Код для этого

password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

Моя проблема в том, что когда этот флажок снят, он должен снова установить тип ввода на ПАРОЛЬ.Я сделал это, используя -

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

Но текст внутри этого текста редактирования все еще виден.И к удивлению, когда я меняю ориентацию, он автоматически устанавливает тип ввода на ПАРОЛЬ, а текст внутри маркируется (отображается как пароль).

Есть ли способ добиться этого?

Ответы [ 21 ]

0 голосов
/ 27 марта 2012

Я бы удалил android:inputType="textPassword" из вашего макета.Вот почему он переключается обратно на пароль, когда меняется ориентация.Потому что каждый раз, когда ориентация меняется, вид воссоздается.

Что касается первой проблемы, попробуйте следующее:

String text = password.getText();
password.setText("");
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
password.setText(text);

, в основном очищая текст перед тем, как изменить тип ввода и затем добавить его обратно.

...