問題描述
在我的應用程序中,我有一個 EditText
,其默認輸入類型默認設置為 android:inputType="textPassword"
.它的右側有一個 CheckBox
,當它被選中時,會將該 EditText 的輸入類型更改為 NORMAL PLAIN TEXT.代碼是
In my application, I have an EditText
whose default input type is set to android:inputType="textPassword"
by default. It has a CheckBox
to its right, which is when checked, changes the input type of that EditText to NORMAL PLAIN TEXT. Code for that is
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
我的問題是,當取消選中 CheckBox 時,它應該再次將輸入類型設置為 PASSWORD.我已經使用了-
My problem is, when that CheckBox is unchecked it should again set the input type to PASSWORD. I've done it using-
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
但是,edittext 中的文本仍然可見.令人驚訝的是,當我改變方向時,它會自動將輸入類型設置為 PASSWORD 并且里面的文本是項目符號(顯示為密碼).
But, the text inside that edittext is still visible. And for surprise, when I change the orientation, it automatically sets the input type to PASSWORD and the text inside is bulleted (shown like a password).
有什么方法可以做到這一點?
Any way to achieve this?
推薦答案
以編程方式向該 EditText
添加一個額外的屬性,您就完成了:
Add an extra attribute to that EditText
programmatically and you are done:
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
對于數字密碼(pin):
For numeric password (pin):
password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
另外,請確保光標位于 EditText
中文本的末尾,因為當您更改輸入類型時,光標將自動設置為起始點.所以我建議使用以下代碼:
Also, make sure that the cursor is at the end of the text in the EditText
because when you change the input type the cursor will be automatically set to the starting point. So I suggest using the following code:
et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());
使用數據綁定時,可以使用如下代碼:
When using Data Binding, you can make use of the following code:
<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:
If using Kotlin:
password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
這篇關于以編程方式將 EditText 的輸入類型從 PASSWORD 更改為 NORMAL &反之亦然的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!