Android中edittext使用代码切换密文明文显示的小问题
2020-01-07 本文已影响0人
lambentlight
在使用edittext的过程中,如果我们在代码中,仅仅只设置为
editText1.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
的话,会不会有任何作用的
然后这里有一个地方需要引起我们的注意,需要注意XML部分参数值在Java代码中设置时要达到相同效果可能java中参数需要由多个参数组合使用。
使用代码设置类似XML效果参数时若为达到效果应查找相关类似的参数表。
Constant | Value | Description |
---|---|---|
none | 0x00000000 | There is no content type. The text is not editable. |
text | 0x00000001 | Just plain old text. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VAR | ATION_NORMAL. |
textCapCharacters | 0x00001001 | Can be combined with text and its variations to request capitalization of all characters. Corresponds to TYPE_TEXT_FLAG_CAP_CHARACTERS. |
textCapWords | 0x00002001 | Can be combined with text and its variations to request capitalization of the first character of every word. Corresponds to TYPE_TEXT_FLAG_CAP_WORDS. |
textCapSentences | 0x00004001 | Can be combined with text and its variations to request capitalization of the first character of every sentence. Corresponds toTYPE_TEXT_FLAG_CAP_SENTENCES. |
textAutoCorrect | 0x00008001 | Can be combined with text and its variations to request auto-correction of text being input. Corresponds to TYPE_TEXT_FLAG_AUTO_CORRECT. |
textAutoComplete | 0x00010001 | Can be combined with text and its variations to specify that this field will be doing its own auto-completion and talking with the input method appropriately. Corresponds to TYPE_TEXT_FLAG_AUTO_COMPLETE. |
textMultiLine | 0x00020001 | Can be combined with text and its variations to allow multiple lines of text in the field. If this flag is not set, the text field will be constrained to a single line. Corresponds to TYPE_TEXT_FLAG_MULTI_LINE. |
textImeMultiLine | 0x00040001 | Can be combined with text and its variations to indicate that though the regular text view should not be multiple lines, the IME should provide multiple lines if it can. Corresponds to TYPE_TEXT_FLAG_IME_MULTI_LINE. |
textNoSuggestions | 0x00080001 | Can be combined with text and its variations to indicate that the IME should not show any dictionary-based word suggestions. Corresponds toTYPE_TEXT_FLAG_NO_SUGGESTIONS. |
textUri | 0x00000011 | Text that will be used as a URI. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_URI. |
textEmailAddress | 0x00000021 | Text that will be used as an e-mail address. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS. |
textEmailSubject | 0x00000031 | Text that is being supplied as the subject of an e-mail. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_SUBJECT. |
textShortMessage | 0x00000041 | Text that is the content of a short message. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_SHORT_MESSAGE. |
textLongMessage | 0x00000051 | Text that is the content of a long message. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_LONG_MESSAGE. |
textPersonName | 0x00000061 | Text that is the name of a person. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PERSON_NAME. |
textPostalAddress | 0x00000071 | Text that is being supplied as a postal mailing address. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS. |
textPassword | 0x00000081 | Text that is a password. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD. |
textVisiblePassword | 0x00000091 | Text that is a password that should be visible. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD. |
textWebEditText | 0x000000a1 | Text that is being supplied as text in a web form. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EDIT_TEXT. |
textFilter | 0x000000b1 | Text that is filtering some other data. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_FILTER. |
textPhonetic | 0x000000c1 | Text that is for phonetic pronunciation, such as a phonetic name field in a contact entry. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PHONETIC. |
textWebEmailAddress | 0x000000d1 | Text that will be used as an e-mail address on a web form. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS. |
textWebPassword | 0x000000e1 | Text that will be used as a password on a web form. Corresponds toTYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD. |
number | 0x00000002 | A numeric only field. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_NORMAL. |
numberSigned | 0x00001002 | Can be combined with number and its other options to allow a signed number. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_SIGNED. |
numberDecimal | 0x00002002 | Can be combined with number and its other options to allow a decimal (fractional) number. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL. |
numberPassword | 0x00000012 | A numeric password field. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_PASSWORD. |
phone | 0x00000003 | For entering a phone number. Corresponds to TYPE_CLASS_PHONE. |
datetime | 0x00000004 | For entering a date and time. Corresponds to TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_NORMAL. |
date | 0x00000014 | For entering a date. Corresponds to TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_DATE. |
time | 0x00000024 | For entering a time. Corresponds to TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_TIME |
//显示方式
if (isChecked) {
//密文
mPswEdt.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
//明文
mPswEdt.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
使用这种方式,使用代码修改密码显示,会有一个小问题,就是显示的密码的*和原本的显示有一点差距,大小比原本的大一点点,使用起来比较难受,密码长度上去以后就会看出差距,解决也不算难,在init的时候,就直接设置一次就可以,强行全部变大,就看不出差距了。但是对于有强迫证的人来说,这种方式不算很完美。对于密码的显示问题可以使用下面这种方式。
第二种方式
//显示方式
if (isChecked) {
//显示明文
mPswEdt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
//显示密文
mPswEdt.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
这种方式就没有问题了。