Android定义editview数组,【整理】Android中EditText中的InputType类型含义与如何定义

【背景】

经过一些Android中EditText方面的折腾:

然后对于EditText(或TextView)中的InputType的值的含义和类型,以及如何定义,有了个更清晰点的认识。

现在整理如下:

EditText的InputType属性,可以在代码中设置,也可以预先在xml中定义

设置EditText的InputType属性,最简单省事的办法就是在定义EditText的xml中直接设置。

比如:

想要设置一个可编辑的文本框的输入内容为只能输入数字,则就可以:

(1)xml中定义InputType为number

android:id="@+id/variableValue"

......

android:inputType="number" />

(2)代码中设置InputType为TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_NORMALEditText variableValueView = (EditText) variableLayout.findViewById(R.id.variableValue);

int inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL;

variableValueView.setInputType(inputType);

这样的话,之后界面中生成的EditText,当点击后要输入内容的时候,弹出的输入法,自动变成那种只能输入数字的小键盘类型的了:

9d90213c69d8b478f95389f1c82d3c5b.png

另外,附上,正常的普通字符串,即:

xml中:android:inputType="text"

或代码中:someEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL);

时,显示出来的输入法键盘的效果:

eb864278879de16d3b46485b49471f44.png

EditText的InputType属性对应的xml定义有哪些,以及代码中设置的InputType类型有哪些

知道了设置EditText的InputType属性值,既可以通过xml中定义,也可以在代码中设置为InputType的某种值,但是到底这些值有哪些,以及分别对应的含义是啥,则可以参考官网:

中的完整的列表:ConstantValueDescription

none0x00000000There is no content type. The text is not editable.

text0x00000001

textCapCharacters0x00001001Can be combined with text and its variations to request capitalization of all characters. Corresponds to TYPE_TEXT_FLAG_CAP_CHARACTERS.

textCapWords0x00002001Can be combined with text and its variations to request capitalization of the first character of every word. Corresponds to TYPE_TEXT_FLAG_CAP_WORDS.

textCapSentences0x00004001Can be combined with text and its variations to request capitalization of the first character of every sentence. Corresponds to TYPE_TEXT_FLAG_CAP_SENTENCES.

textAutoCorrect0x00008001Can be combined with text and its variations to request auto-correction of text being input. Corresponds to TYPE_TEXT_FLAG_AUTO_CORRECT.

textAutoComplete0x00010001Can 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.

textMultiLine0x00020001Can 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.

textImeMultiLine0x00040001Can 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.

textNoSuggestions0x00080001Can be combined with text and its variations to indicate that the IME should not show any dictionary-based word suggestions. Corresponds to TYPE_TEXT_FLAG_NO_SUGGESTIONS.

textUri0x00000011Text that will be used as a URI. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_URI.

textEmailAddress0x00000021Text that will be used as an e-mail address. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS.

textEmailSubject0x00000031Text that is being supplied as the subject of an e-mail. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_SUBJECT.

textShortMessage0x00000041Text that is the content of a short message. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_SHORT_MESSAGE.

textLongMessage0x00000051Text that is the content of a long message. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_LONG_MESSAGE.

textPersonName0x00000061Text that is the name of a person. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PERSON_NAME.

textPostalAddress0x00000071Text that is being supplied as a postal mailing address. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS.

textPassword0x00000081

textVisiblePassword0x00000091Text that is a password that should be visible. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.

textWebEditText0x000000a1Text that is being supplied as text in a web form. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EDIT_TEXT.

textFilter0x000000b1Text that is filtering some other data. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_FILTER.

textPhonetic0x000000c1Text that is for phonetic pronunciation, such as a phonetic name field in a contact entry. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PHONETIC.

textWebEmailAddress0x000000d1Text that will be used as an e-mail address on a web form. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS.

textWebPassword0x000000e1Text that will be used as a password on a web form. Corresponds to TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD.

number0x00000002

numberSigned0x00001002Can be combined with number and its other options to allow a signed number. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_SIGNED.

numberDecimal0x00002002Can be combined with number and its other options to allow a decimal (fractional) number. Corresponds to TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL.

numberPassword0x00000012

phone0x00000003For entering a phone number. Corresponds to TYPE_CLASS_PHONE.

datetime0x00000004

date0x00000014

time0x00000024

如此,就可以自己去在xml或代码中,分别试试,每种不同的InputType对应的都是什么效果了。

注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY

之前在代码中给InputType设置值,错写成:inputType = InputType.TYPE_DATETIME_VARIATION_TIME;

导致,EditText点击后,不显示输入法键盘,改为正确的:inputType = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME;

就可以正常的显示键盘了。

而后,也注意到官网

的解释中的示例:A password field with with the password visible to the user:inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORDA multi-line postal address with automatic capitalization:inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS | TYPE_TEXT_FLAG_MULTI_LINEA time field:inputType = TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_TIME

以及

中提示的:

“Must be one or more (separated by ‘|’) of the following constant values.”

即:

需要一个或多个值,中间通过竖杠"|"去抑或(按位或)的。

详见:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值