Onscreen Input Methods,屏幕键盘
从1.5开始,Android系统提供了一个输入框架(IMF),这个框架可以创建输入法软件键盘。这篇文章就是提供了一个输入法IME的概览,与应用程序的相关操作。
imf是为一些设备提供支持的,如没有物理键盘的,所以有软键盘对用户体验很重要。
What is an input method?
Android的imf的设计可以满足多种要求,如软键盘,手写等。用户通常是点击输入框,然后来使用键盘的,(这里就不上图了。),EditText默认点击后会有键盘弹出的。
软键盘会在应用程序窗口的底部。为了组织屏幕的空间分配给应用程序与软键盘,Android提供了一些方法,下面使用的是pan,scan,滚动应用程序的界面,让当前的焦点可见,这也是默认的模式,它对应用程序比较安全。
多数情况下,屏幕的大小是可以重新定义大小的,在键盘弹出后,应用是高度可以缩放,不会被ime遮盖,如邮件程序就是这样的。
这需要应用有可缩放的部分,可以通过缩小一些区域来使整个应用都可见。
还有一种模式是全屏或extract,当ime太大时,比如横屏的,ime占用的空间太大,就不会显示整个应用的界面,而只是显示了一个输入框,ime覆盖在上面。
ime还有一些可定制的部分,如DONE按钮就可以自定义一些事件,来提高用户的体验。
基于xml控制ime
系统对于一个应用提供了一些可用的方法:
默认使用pan,scan模式,除非重新调整大小的模式不适合,如list,滚动的view.
分析各种textview属性来判断应该显示怎么样的布局,如只需要数字可以使用inputType(新系统支持的,好像是2.3),这样就只会出现 数字键盘了。
提供一些默认的行为,如下一个,完成按钮等。
除此之外还有一些方法:
为每一个Edittext分配输入类型
inputType,这个属性相当重要的,它可以覆盖其它的属性如android:password,android:singleLine,android:numeric。如果都分配了,系统默认使用这个值。
inputType属性有三部分:
class,是可输入的字符概述,目前支持的有普通文本,数字,电话号码,时间。
variation,是class的补充。这个属性通常与class一起用 的,带有class的前缀,如textEmailAddress是一个邮箱地址域,numberSigned是一个数字域。
flags也算是补充 ,如textCapSentences,textAutoCorrect,textMultiline
这些属性可以用|放在一起:android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine"
启用一些窗口特性与大小重塑模式
除了上面的方法,退而求其次的就是分配一些窗口的属性,最多的就是resize与pan模式的区别了。
Activity的android:windowSofrInputMode属性也有一些可用值,同样可以一起使用,用|分隔的。
窗口的调整模式可以是adjustResize,或adjustPan,最好是分配一个值。
当Activity显示时,也可以自动显示键盘,默认是不会自动显示的,这时需要属性stateVisible,还有一些其它的state状态可以文档里查看。
android:windowSoftInputMode="stateVisible|adjustResize"这样表示重新调整大小,自动弹出键盘。
控制按钮
当不在多行输入框中操作时,整个软键盘都绑定在一个事件上,如G1,enter键会次光标移动到下一个位置。
全屏模式时,ime会提供一个按钮在右侧以便可方便的操作。
这些由TextView的android:imeOptions属性控制的,也是用|连接的。
有一些定义好的行为了:actionGo,actionSearch,actionSend,actionNext,actionDone。如果这些没有分配,系统会用anctionNext,actionDone来处理的,
flagNoEnterAction选项告诉ime,enter键无效,不会响应事件,不管是不是多行的输入框,这可以避免不小心的操作。
flagNoAccessortAction将按钮从输入区移走(应该是右边的“done")。
flagNoExtractUi将文本区都移走了,允许应用在ime下面显示。
使用示例:android:imeOptions="actionSend|flagNoEnterAction"
控制ime的api
新的系统添加了一些新的api,但也可能造成旧版系统的不兼容。最低的sdk要求是3,(这也太低了吧?)
api主要在android.view.inputmethod.InputMethodManager类,可以通过Context.getSystemServices()来获取,它允许你访问全局的输入法,如显示,隐藏当前ime的输入区域。
当然也少不了一些新的flag,可以通过Window.addFlags()来处理,还有Window.setSoftInputMethod(),PopupWindow类增加了一些控制方法,如WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM常量 ,控制窗口在ime的前面。
多数的交互通过android.view.inputmethod.InputConnection类,这是一个api的应用实现,通常不需要你担心,TextView也有自己的实现。
这篇文章感觉翻译的不好,因为我对InputMethod熟悉程序不够,以后更熟悉了,再更新吧,希望有看到不对的地方可以提出意见
分享到:
相关推荐
Android Linux内核的input子系统是操作系统与各种输入设备交互的关键组件,它为键盘、鼠标、触摸屏等设备提供了统一的接口。这个子系统的设计使得开发者能够方便地处理来自不同输入设备的事件,无论是硬件设备还是...
### Struts2框架中“No result defined for action and result input”错误解析及解决方法 #### 错误概述 在Struts2框架中开发Web应用程序时,可能会遇到一个名为“No result defined for action and result input...
Document doc = new Document(inputPath); // 遍历每一页,检查并移除水印 foreach (Section section in doc.Sections) { foreach (Paragraph paragraph in section.Body.Paragraphs) { if (paragraph....
Linux设备模型中的input子系统是Linux内核中处理输入设备的核心组件。它的设计目标是为各种类型的输入设备(如键盘、鼠标、触摸屏等)提供一个统一的接口,使得上层应用程序无需关心底层驱动的实现细节,只需通过...
4. 操作文档:根据需要调用Document对象的方法,如`doc.loadFromFile("input.docx");`来加载文件,`doc.saveToFile("output.docx", FileFormat.Docx);`来保存文件。 5. 错误处理:捕获并处理可能抛出的异常,确保...
DOC88是一个知名的在线文档分享平台,以其丰富的学习资料和学术资源而闻名。该平台上的文档涵盖各个领域,包括但不限于教育、科技、工程、管理、医学等,为用户提供了广泛的知识获取途径。然而,通常在DOC88上下载...
html5中的input新属性range使用记录.doc
RenderDoc是一款强大的图形调试工具,尤其在游戏开发和图形编程领域中被广泛应用。它提供了详细的帧捕获和分析功能,帮助开发者深入理解渲染管线的工作原理,查找并修复图像错误。然而,原生的RenderDoc在导出纹理时...
Path searching using AI methods 使用AI方法进行路径搜索.doc
Itext和Apache POI是两个常用的库,分别用于处理PDF和Microsoft Word(DOC)文件。在此,我们将深入探讨如何使用Itext实现HTML到DOC的转换,并讨论在DOC文档中保留部分HTML格式的可能性。 Itext是一个Java库,主要...
String sourceFilePath = "input.doc"; String targetFilePath = "output.docx"; // 读取.doc文件 FileInputStream fis = new FileInputStream(sourceFilePath); HWPFDocument doc = new HWPFDocument(fis); ...
php获取表单中多个同名input元素的值.doc
微软DOC二进制文件格式是Microsoft Word用于存储文档的主要格式,尤其在早期版本如Word 97、2000、2002(XP)和2003中广泛使用。这种格式以`.doc`为扩展名,采用二进制编码,包含文本、样式、图片、表格、页眉页脚等...
Spire.Doc是一款强大的Java库,专门用于处理Microsoft Word文档,包括创建、编辑、转换和打印Word文件。在本文中,我们将深入探讨如何使用Spire.Doc为Word文档添加水印,以及如何利用它进行Word到HTML的转换。 首先...
Spire.Doc是一款强大的.NET文档处理库,主要用于创建、编辑和转换Microsoft Word文档。这款软件提供了C#编程语言的接口,让开发者能够轻松地在他们的应用程序中集成Word处理功能。在这个"Spire.Doc官网下载的免费版....
可以添加本地依赖通过命令mvn install:install-file -Dfile=C:\Users\spire.doc-5.4.10.jar -DgroupId=e-iceblue -DartifactId=spire.doc -Dversion=5.4.10 -Dpackaging=jar将该依赖添加到本地依赖库使用,其他添加...
注意:input[type=file] 标签中的属性accept=application/msword,application/pdf 在pc上正常,但是在手机ios和android上这个文件格式限制会被忽略,所以需要在js中增加格式的判断,以及对应显示样式的设置.(我也是刚...
可以添加本地依赖通过命令mvn install:install-file -Dfile=C:\Users\spire.doc-5.4.0.jar -DgroupId=e-iceblue -DartifactId=spire.doc -Dversion=5.4.0 -Dpackaging=jar将该依赖添加到本地依赖库使用,其他添加到...
spire.doc API文档 spire.doc API文档spire.doc API文档