输入法 (IME) 是一种可让用户输入文本的用户控件。Android 提供了一种可扩展的输入法框架 (IMF) 。借助该框架,应用可以为用户提供备选输入法,包括软键盘、手写识别器和硬键盘转换器。安装 IME 后,用户可以从系统设置中选择一个 IME,并在整个系统中使用该 IME。一次只能启用一个 IME。我们将重点介绍软键盘,因为软键盘是用户最常用的。
1、什么是输入法?
用户通常通过点击文本视图来编辑来访问当前 IME,如主屏幕所示:
软键盘位于屏幕底部,位于应用程序窗口上方。为了合理安排应用程序和 IME 之间的可用空间,我们使用了几种方法;此处展示的方法称为*"adjustPan"*,只需滚动应用程序窗口即可看到当前聚焦的视图。这是默认模式,因为它对现有应用程序来说最安全。
最常见的首选屏幕布局是*"adjustResize"*,其中应用程序窗口的大小会调整为完全可见。以下是撰写电子邮件时的示例:
应用程序窗口的大小会进行调整,使其不会被 IME 遮挡,从而允许完全访问应用程序和 IME。当然,这仅适用于具有可调整大小区域的应用程序,这些区域可以缩小以腾出足够的空间,但此模式下的垂直空间实际上并不小于横向模式的可用空间,因此应用程序通常已经可以容纳它了。
最后一种主要模式是 fullscreen 或 extract 模式。当 IME 过大,无法与底层应用程序合理共享空间时,会使用这种模式。使用标准 IME 时,只有在屏幕处于横向模式时才会遇到这种情况,但其他 IME 可以随时使用这种模式。在这种情况下,应用程序窗口保持原样,IME 只会在其上方全屏显示,如下所示:
由于 IME 覆盖了应用程序,它拥有自己的编辑区域,用于显示应用程序中实际包含的文本。此外,应用程序还可以通过一些有限的机会自定义 IME 的某些部分(顶部的"done"按钮和底部的 Enter 键标签),以提升用户体验。
2、常见的 IME 配置
系统采取了许多措施来尝试帮助现有应用程序尽可能好地与 IME 配合使用,例如:
- 默认使用 adjustPan,除非它可以通过列表、滚动视图等的存在合理地猜测调整大小模式将起作用。
- 分析现有的各种 TextView 属性来猜测内容类型(numbers、plaintext等),以帮助软键盘显示适当的按键布局。
- 为全屏 IME 分配一些默认操作,例如"next field"和"done"。
还可以在应用程序中进行一些简单的操作,这些操作通常可以极大地改善用户体验。除非明确提及,否则这些操作适用于任何 Android 平台版本,如:
2.1、指定每个 EditText 控件的输入类型
对于应用程序来说,最重要的事情就是 android:inputType 在每个上使用新属性 EditText。该属性提供了有关文本内容的更丰富的信息。该属性实际上替换了许多现有属性(android:password, android:singleLine, android:numeric, android:phoneNumber, android:capitalize, android:autoText, and android:editable)。如果您指定旧属性和新的 android:inputType 属性,系统将使用 android:inputType 并忽略其他属性。
android:inputType 属性包含三部分:
- 类是对字符的总体解释。目前支持的类有
text(纯文本)、number(十进制数)、phone(电话号码)和datetime(日期或时间)。 - 变体是对类的进一步细化。在属性中,您通常会同时指定类和变体,并以类作为前缀。例如,
textEmailAddress是一个文本字段,用户将在其中输入电子邮件地址 (foo@bar.com),因此键盘布局将包含一个"@"字符以方便访问;而numberSigned是一个带符号的数字字段。如果仅指定类,则会获得默认/通用变体。 - 可以指定其他标志来进一步细化。这些标志特定于某个类。例如,该类的一些标志
text包括textCapSentences、textAutoCorrect和textMultiline。