【整理】Android中EditText中的InputType类型含义与如何定义
【背景】
经过一些Android中EditText方面的折腾:
【已解决】android中的EditText控件没有获得焦点但是输入法却弹出显示->Activity中不要默认就显示输入法
【暂未去解决】Android中EditText如何在失去焦点后让输入法消失
【已解决】Android中EditText点击获得焦点后无法显示输入法键盘
【已解决】Android中代码出现警告提示:android:phoneNumber is deprecated: Use inputType instead
然后对于EditText(或TextView)中的InputType的值的含义和类型,以及如何定义,有了个更清晰点的认识。
现在整理如下:
EditText的InputType属性,可以在代码中设置,也可以预先在xml中定义
设置EditText的InputType属性,最简单省事的办法就是在定义EditText的xml中直接设置。
比如:
想要设置一个可编辑的文本框的输入内容为只能输入数字,则就可以:
(1)xml中定义InputType为number
?1 2 3 4 | < EditText android:id = "@+id/variableValue" ...... android:inputType = "number" /> |
(2)代码中设置InputType为TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_NORMAL
?1 2 3 | EditText variableValueView = (EditText) variableLayout.findViewById(R.id.variableValue); int inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL; variableValueView.setInputType(inputType); |
这样的话,之后界面中生成的EditText,当点击后要输入内容的时候,弹出的输入法,自动变成那种只能输入数字的小键盘类型的了:
另外,附上,正常的普通字符串,即:
xml中:
?1 | android:inputType="text" |
或代码中:
?1 | someEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL); |
时,显示出来的输入法键盘的效果:
EditText的InputType属性对应的xml定义有哪些,以及代码中设置的InputType类型有哪些
知道了设置EditText的InputType属性值,既可以通过xml中定义,也可以在代码中设置为InputType的某种值,但是到底这些值有哪些,以及分别对应的含义是啥,则可以参考官网:
TextView | Android Developers – android:inputType
中的完整的列表:
Constant | Value | Description |
none | 0x00000000 | There is no content type. The text is not editable. |
text | 0x00000001 | Just plain old text. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_NORMAL. |
textCapCharacters | 0x00001001 | Can be combined withtextand its variations to request capitalization of all characters. Corresponds toTYPE_TEXT_FLAG_CAP_CHARACTERS. |
textCapWords | 0x00002001 | Can be combined withtextand its variations to request capitalization of the first character of every word. Corresponds toTYPE_TEXT_FLAG_CAP_WORDS. |
textCapSentences | 0x00004001 | Can be combined withtextand its variations to request capitalization of the first character of every sentence. Corresponds toTYPE_TEXT_FLAG_CAP_SENTENCES. |
textAutoCorrect | 0x00008001 | Can be combined withtextand its variations to request auto-correction of text being input. Corresponds toTYPE_TEXT_FLAG_AUTO_CORRECT. |
textAutoComplete | 0x00010001 | Can be combined withtextand its variations to specify that this field will be doing its own auto-completion and talking with the input method appropriately. Corresponds toTYPE_TEXT_FLAG_AUTO_COMPLETE. |
textMultiLine | 0x00020001 | Can be combined withtextand 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 toTYPE_TEXT_FLAG_MULTI_LINE. |
textImeMultiLine | 0x00040001 | Can be combined withtextand 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 toTYPE_TEXT_FLAG_IME_MULTI_LINE. |
textNoSuggestions | 0x00080001 | Can be combined withtextand 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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_NORMAL. |
numberSigned | 0x00001002 | Can be combined withnumberand its other options to allow a signed number. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_FLAG_SIGNED. |
numberDecimal | 0x00002002 | Can be combined withnumberand its other options to allow a decimal (fractional) number. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_FLAG_DECIMAL. |
numberPassword | 0x00000012 | A numeric password field. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_PASSWORD. |
phone | 0x00000003 | For entering a phone number. Corresponds toTYPE_CLASS_PHONE. |
datetime | 0x00000004 | For entering a date and time. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_NORMAL. |
date | 0x00000014 | For entering a date. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_DATE. |
time | 0x00000024 | For entering a time. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_TIME. |
如此,就可以自己去在xml或代码中,分别试试,每种不同的InputType对应的都是什么效果了。
注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY
之前在代码中给InputType设置值,错写成:
?1 | inputType = InputType.TYPE_DATETIME_VARIATION_TIME; |
导致,EditText点击后,不显示输入法键盘,改为正确的:
?1 | inputType = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME; |
就可以正常的显示键盘了。
而后,也注意到官网
InputType | Android Developers
的解释中的示例:
|
以及
TextView | Android Developers – android:inputType
中提示的:
“Must be one or more (separated by ‘|’) of the following constant values.”
即:
需要一个或多个值,中间通过竖杠"|"去抑或(按位或)的。
详见:
【已解决】Android中EditText点击获得焦点后无法显示输入法键盘
更多相关文章
- Android高德地图自定义放大缩小控件
- android 代码proguard
- 自定义Android应用程序标题条
- Android日志系统分析之日志设备驱动程序代码阅读
- 自定义RadioButton 文字在下,图片在上
- android 自定义加减按钮
- android AlertDialog 弹窗自定义布局 点击外部不关闭弹窗
- Android Studio实现代码混淆
- 自定义progressbar使用图片