1. ホーム
  2. アンドロイド

[解決済み】EditTextの入力タイプをPASSWORDからNORMALに、またはその逆にプログラムによって変更する。

2022-04-08 23:02:38

質問

私のアプリケーションでは EditText そのデフォルトの入力タイプは android:inputType="textPassword" はデフォルトで これは CheckBox をチェックすると、そのEditTextの入力タイプがNORMAL PLAIN TEXTに変更されます。そのためのコードは

password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

問題は、そのチェックボックスがチェックされていないとき、再び入力タイプをPASSWORDに設定しなければならないことです。私はそれを使用して行いました

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

しかし、そのeditxtの中のテキストは表示されたままです。そして驚いたことに、向きを変えると自動的に入力タイプがPASSWORDになり、中のテキストが箇条書き(パスワードのように表示される)されるのです。

これを実現する方法はありますか?

どのように解決するのですか?

を追加してください。 EditText をプログラムして、完了です。

password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

数字パスワード(PIN)用。

password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

また、カーソルが EditText なぜなら、入力タイプを変更すると、カーソルは自動的に開始点に設定されるからです。そこで、次のようなコードを使うことをお勧めします。

et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());

Data Bindingを使用する場合、以下のコードを利用することができます。

<data>
        <import type="android.text.InputType"/>
.
.
.
<EditText
android:inputType='@{someViewModel.isMasked ? 
(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) :
InputType.TYPE_CLASS_TEXT }'

Kotlinを使用する場合。

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD