`

代码实例 -- 在程序里检查虚拟键盘状态, 并开启关闭

阅读更多
最近都在推上, 荒废了blog, 所以都没怎么写心得, 对不起大家了哈 (其实也很忙 ;)

现在准备有空就写点实践心得, 希望对大家有帮助.

今天讲的是如何在Android程序中检查虚拟键盘的状态, 如何开启关闭虚拟键盘.

用过Android手机的童鞋们都知道, Android的虚拟键盘是挺挫的~~~ 按键不精确, 反应也很2...

在Android系统服务里有个InputMethodManager是用来控制输入法的:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);


用:
if (imm.isActive())

来检查虚拟键盘是不是在开启的状态

然后可以用toggle方法来关闭它
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);

当然如果当前虚拟键盘是关闭的, toggle就会开启键盘.

InputMethodManager也有独立开启和关闭的方法:
imm.showSoftInput(view, flags);
imm.showSoftInputFromInputMethod(token, flags);
imm.hideSoftInputFromInputMethod(token, flags);

但我在实践中从window获取那个token偶尔会出Exception, 所以现在都在用toggle这个方法将就着 ;)
分享到:
评论
8 楼 lyltiger 2011-02-12  
虚拟键盘标记
7 楼 mqqqvpppm 2010-11-29  
android 2.2 貌似 不work, 我测试 虚拟键盘以及关闭 但是 imm.isActive()为 true
6 楼 品味Java 2010-11-29  
;如何在触摸 edittext 之后,不让系统加载自己的软键盘
5 楼 gaogaf 2010-06-29  
imm.hideSoftInputFromInputMethod(token, flags); 

这里的参数怎么设定?尤其是token
4 楼 lordhong 2010-03-06  
melode11 写道
lordhong 写道
melode11 写道
可以用hideSoftInputFromWindow(View.getWindowsToken(),int)
view就用当前显示在屏幕上的TextView应该就不会exception。

我有时候vView.getWindowsToken()这里拿到的是NULL :(

那我想是还没有attach到屏幕上吧。而且也不是setContentView了就马上attach的,而是被当作下一个message处理以后才真正attach到window.

嗯,应该是这样,不过代码实现起来繁琐鸟~~~
3 楼 melode11 2010-03-04  
lordhong 写道
melode11 写道
可以用hideSoftInputFromWindow(View.getWindowsToken(),int)
view就用当前显示在屏幕上的TextView应该就不会exception。

我有时候vView.getWindowsToken()这里拿到的是NULL :(

那我想是还没有attach到屏幕上吧。而且也不是setContentView了就马上attach的,而是被当作下一个message处理以后才真正attach到window.
2 楼 lordhong 2010-02-27  
melode11 写道
可以用hideSoftInputFromWindow(View.getWindowsToken(),int)
view就用当前显示在屏幕上的TextView应该就不会exception。

我有时候vView.getWindowsToken()这里拿到的是NULL :(
1 楼 melode11 2010-02-27  
可以用hideSoftInputFromWindow(View.getWindowsToken(),int)
view就用当前显示在屏幕上的TextView应该就不会exception。

相关推荐

    vc++ 开发实例源码包

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    C#经典特效代码470例(PDF已经整理)

    - **实例说明**:为支持触摸操作的程序添加虚拟键盘,便于用户输入文本。 - **技术要点**: - 使用`User32`命名空间提供的API函数来模拟按键事件。 - 使用`TextBox`控件作为输入框。 - 使用`PictureBox`控件作为...

    计算机软件-商业源码-实例92 检测NumLock、Insert、CapsLock、ScrollLock键的状态.zip

    这些键在日常使用中并不常被按下,但它们的状态对于某些特定的应用程序,如数据输入或者特殊控制,是至关重要的。本实例将深入探讨如何检测这些键的状态,并提供相关的源码实现。 NumLock键主要用于控制数字小键盘...

    入门学习Linux常用必会60个命令实例详解doc/txt

    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...

    易语言程序免安装版下载

    修改BUG:在IDE中打开源代码文件(.e)后,高级选择夹组件不能正确切换到“现行子夹”属性设定的子夹。 9. 修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件右下角时按右光标键进入下一行会导致显示...

    80X86汇编语言程序设计

    - **DOS磁盘文件管理功能调用**:如打开文件、读取文件、关闭文件等。 - **应用举例**:通过实例演示文件管理的具体操作。 **4.5 子程序的递归和重入** - **递归子程序**:子程序内部调用自身。 - **可重入子程序*...

    C++实现按键控制家具开关的代码

    在本项目中,"C++实现按键控制家具开关的代码"是一个简单的程序,它使用C++编程语言设计,目的是通过按键来控制虚拟家具的开关状态。这个程序可能被用于智能家居系统的模拟或者教育目的,帮助初学者理解如何将硬件...

    计算机图形学实验报告--纹理映射.pdf

    它打开文件,读取位图数据,并返回一个指向`AUX_RGBImageRec`结构体的指针,该结构体包含了图像的宽度、高度、颜色格式以及实际的像素数据。 2. **纹理对象的生成**: `LoadGLTextures`函数负责创建OpenGL纹理对象...

    bluetooth spp server 测试程序

    在这个程序中,"spp_server.c"是源代码文件,它包含了实现SPP服务器端核心逻辑的代码。 **蓝牙技术概述** 蓝牙是一种短距离无线通信技术,最初设计用于替代有线连接,如键盘、鼠标和耳机等设备与主机之间的连接。...

    windows驱动开发技术详解-part2

    这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作 为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装 和调试程序。  ...

    Windows驱动开发技术详解的光盘-part1

    这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,被本书其他章节的驱动程序开发所复用。笔者将带领读者编写代码、编译、安装和调试程序。  1.1 ...

    汇编语言代码集

    它可能教授如何在汇编中实现文件操作,如打开、关闭、读取和写入文件,以及如何与硬盘等存储设备交互。 通过这些小程序,初学者不仅能了解汇编语言的基础,还能深入到系统级编程、硬件交互、内存管理等多个领域。每...

    VC消息映射与处理\创建和使用键盘插入符

    通过这种方式,我们不仅可以监听到键盘插入符的状态变化,还可以根据需要控制其他功能的开启和关闭。理解并掌握VC++中的消息映射和键盘事件处理,对于开发高效、响应式的Windows应用程序至关重要。实例024——创建和...

    PT80-NEAT开发指南v1.1

    应用程序的关闭 .................................................................................................................................... 19 框架窗口 ...........................................

    windowXP 运行命令汇总

    - **用途**: 提供一个虚拟键盘,适用于触摸屏设备或无法使用物理键盘的情况。 #### 65. odbcad32 - **功能**: 启动 ODBC 数据源管理器。 - **用途**: 用于配置和管理 ODBC 数据源,以便应用程序能够连接到数据库。 ...

    Linux Kernel中文版

    - **操作**: 打开、关闭、读写等。 - **管理**: 文件描述符、文件句柄。 **4.5 虚拟内存** - **定义**: 为进程提供比实际物理内存更大的地址空间。 - **实现**: 通过分页或分段技术实现。 - **优势**: 提高内存利用...

Global site tag (gtag.js) - Google Analytics