概述
【背景】
经过一些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 with text and its variations to request capitalization of all characters. Corresponds toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_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 toTYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_URI. |
textEmailAddress | 0x00000021 | Text that will be used as an e-mail address. Corresponds to TYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_EMAIL_ADDRESS. |
textEmailSubject | 0x00000031 | Text that is being supplied as the subject of an e-mail. Corresponds to TYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_EMAIL_SUBJECT. |
textShortMessage | 0x00000041 | Text that is the content of a short message. Corresponds to TYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_SHORT_MESSAGE. |
textLongMessage | 0x00000051 | Text that is the content of a long message. Corresponds to TYPE_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 to TYPE_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 to TYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_VISIBLE_PASSWORD. |
textWebEditText | 0x000000a1 | Text that is being supplied as text in a web form. Corresponds to TYPE_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 to TYPE_CLASS_TEXT |TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS. |
textWebPassword | 0x000000e1 | Text that will be used as a password on a web form. Corresponds to TYPE_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 with number and its other options to allow a signed number. Corresponds toTYPE_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 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中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"android:inputType="phone" />
//文本类型,多为大写、小写和数字符号。
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress"
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword"
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
//数值类型
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"//拨号键盘
android:inputType="datetime"
android:inputType="date"//日期键盘
android:inputType="time"//时间键盘
numeric和inputType的区别是 inputType功能更强大一些,
numeric代表是这个editbox接受的类型是数字类型 只有三种可选.
inputType则是规定输入类型, 除了包括三种数字类型, 还有各种字符类型.
一个是接受类型, 一个是输入类型.
如果两个都设置了, 肯定是以numberic为主.
------------------------------------------------------------------------------------------------
EditText的属性很多,这里介绍几个:
android:layout_gravity="center_vertical"
设置控件显示的位置:默认top,这里居中显示,还有bottom
android:hint="请输入数字!"
设置显示在空间上的提示信息
android:numeric="integer"
设置只能输入整数,如果是小数则是:decimal
android:singleLine="true"
设置单行输入,一旦设置为true,则文字不会自动换行。
android:password="true"
设置只能输入密码
android:textColor = "#ff8c00"
字体颜色
android:textStyle="bold"
字体,bold, italic, bolditalic
android:textSize="20dip"
大小
android:capitalize = "characters"
以大写字母写
android:textAlign="center"
EditText没有这个属性,但TextView有
android:textColorHighlight="#cccccc"
被选中文字的底色,默认为蓝色
android:textColorHint="#ffff00"
设置提示信息文字的颜色,默认为灰色
android:textScaleX="1.5"
控制字与字之间的间距
android:typeface="monospace"
字型,normal, sans, serif, monospace
android:background="@null"
空间背景,这里没有,指透明
android:layout_weight="1"
权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。
android:textAppearance="?android:attr/textAppearanceLargeInverse"
文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对?
通过EditText的layout xml文件中的相关属性来实现:
1. 密码框属性 android:password="true" 这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。
2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入
3. 仅允许 android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证
下面是一些扩展的风格属性
android:editable="false" 设置EditText不可编辑
android:singleLine="true" 强制输入的内容在单行
android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时
最后
以上就是独特可乐为你收集整理的Android中EditText中的InputType类型含义与如何定义 EditText的InputType属性,可以在代码中设置,也可以预先在xml中定义 EditText的InputType属性对应的xml定义有哪些,以及代码中设置的InputType类型有哪些 注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY的全部内容,希望文章能够帮你解决Android中EditText中的InputType类型含义与如何定义 EditText的InputType属性,可以在代码中设置,也可以预先在xml中定义 EditText的InputType属性对应的xml定义有哪些,以及代码中设置的InputType类型有哪些 注意:通过代码给InputType赋值时,不是设置TYPE_XXX_VARIATION_YYY,而是要设置TYPE_CLASS_XXX | TYPE_XXXX_VARAITION_YYY所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复