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

2024-02-04 20:38

本文主要是介绍【整理】Android中EditText中的InputType类型含义与如何定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:http://www.crifan.com/summary_android_edittext_inputtype_values_and_meaning_definition/

【背景】

经过一些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,当点击后要输入内容的时候,弹出的输入法,自动变成那种只能输入数字的小键盘类型的了:

EditText set to number show keyboard only show number

 

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

xml中:

?
1
android:inputType="text"

或代码中:

?
1
someEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL);

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

edittext inputtype is text how keyboard look like

 

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

的解释中的示例:

A password field with with the password visible to the user:
inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
A multi-line postal address with automatic capitalization:
inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS | TYPE_TEXT_FLAG_MULTI_LINE
A time field:
inputType = TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_TIME

以及

TextView | Android Developers – android:inputType

中提示的:

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

即:

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

 

详见:

【已解决】Android中EditText点击获得焦点后无法显示输入法键盘


这篇关于【整理】Android中EditText中的InputType类型含义与如何定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678739

相关文章

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos