Android没有提供很方便的方法来判断输入法键盘是否显示(或者我没有找到),包括InputMethodManager和Configuration change都没有办法检测,但实际这个功能还是很需要的。

今天终于在stackoverflow发现一种迄今为止最简便的方法,http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android

1. 在需要检测的Activity的layout xml中的root layout指定一个ID

2. 在Activity中加入以下代码

final View root = findViewById(R.id.root);

root.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

int screenHeight = root.getRootView().getHeight();

int myHeight = root.getHeight();

int heightDiff = screenHeight - myHeight;

Log.e("onGlobalLayout", "screenHeight=" + screenHeight);

Log.e("onGlobalLayout", "myHeight=" + myHeight);

if (heightDiff > NORMAL_DIFF) {

Log.e("onGlobalLayout", "Soft keyboard showing");

} else {

Log.e("onGlobalLayout", "Soft keyboard hidden");

}

}

});经笔者测试,screenHeight为整个屏幕的高度(除去虚拟导航栏),myHeight为自身程序所占的高度。

在没有输入法键盘的时候,heightDiff实际就是StatusBar加ActionBar的高度(NORMAL_DIFF),所以只需要根据heightDiff是否大于这个高度就能判断输入法键盘是否显示了。

在4.3原生系统上,StatusBar加ActionBar的高度为73dp,建议实际应用将这个值设大一些,因为不同的手机ROM可能这个高度不一致,输入法键盘一般高度在300dp左右。

android 输入法判断,Android如何检测输入法键盘是否显示相关推荐

  1. android 蓝牙耳机 判断,Android实现蓝牙耳机连接

    前言 最近看了下蓝牙耳机连接的问题,查阅了相关资料,再此做一个总结. 本文参考以下链接: Android实现主动连接蓝牙耳机 再次对作者表示感谢. 今天涉及的内容有: 流程讲解 新建广播Bluetoo ...

  2. android EditText 设置弹出数字输入法键盘

    首先设置只能输入数字: <EditText android:id="@+id/edit_digit_input" android:layout_width="wra ...

  3. (转)android EditText 设置弹出数字输入法键盘

    首先设置只能输入数字: [html] view plaincopy <EditText android:id="@+id/edit_digit_input" android: ...

  4. Android EditText设置弹出数字输入法键盘

    Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...

  5. android禁止输入框自动弹出软键盘,怎么禁用输入法-Android禁止EditText输入框自动弹出软键盘的4种方法...

    用户UI如果有EDITTEXT,经常会自己获得焦点弹出来,如果不需要输入法键盘,就需要禁止弹出.经常使用,现在总结如下: 1.父控件设置属性不弹出 EditText有一个 android:focusa ...

  6. android+第三发输入法控制,android输入法属性使用,软键盘隐藏、显示状态控制大揭秘...

    经常会遇到需要控制输入法的情况,如输入法显示.隐藏: 输入法弹出后,界面被顶上去或编辑框被遮挡等问题:下面分为几个部分总结输入法属性设置,及输入法控制. 一.windowSoftInputMode设置 ...

  7. android 自定义输入法布局,Android InputMethodService|KeyboardView 自定义输入法和键盘 01...

    如何自定义 安卓输入法 和 键盘 1.首先有几个关键类 1.InputMethodService 2.Keyboard 3.KeyboardView 1.1 InputMethodService 看下 ...

  8. Android 进入Activity禁止弹出软键盘输入法及stateHidden和stateAlwaysHidden的区别

    在开发中经常会遇到这样的问题,进入一个含Edittext的Activity后总是会自动弹出软件盘.但是有时候我们又不想让它弹出,因为影响美观,而且用户可能也会反感.最好的做法是刚进入时不让弹出,在用户 ...

  9. android edittext_基于Android输入法开发,制作一个微信斗图APP

    刘望舒 读完需要 20分钟 速读仅需12分钟 作者:小学生° 来源:搜狐技术产品 01 导读 微信斗图的应用有很多,但大部分都是通过微信分享来实现的,需下载 APP,下载表情并分享到微信联系人,操作步 ...

  10. Android 检测键盘是否显示及隐藏键盘

    Android 检测键盘是否显示及隐藏键盘的方法~~ package com.newland.util;import android.app.Activity; import android.view ...

最新文章

  1. 【Python培训基础】一篇文件教你py文件打包成exe
  2. has been modified since the precompiled header
  3. 多VLAN环境下DHCP服务的实现
  4. 谁拿了最多奖学金pascal程序
  5. 修改大型 XML 文件的有效方法
  6. 爬虫基于ADSL动态获取ip
  7. 如何通过 C# 判断一个 路径 是本机还是远程 ?
  8. 利用pdf.js开发嵌入pdf显示,以及利用jquery-ui左右分栏显示
  9. P7920-[Kubic]Permutation
  10. 全栈深度学习第3期: 怎样科学管理实验数据?
  11. Coco2dx-3.0中怎样调用LUA
  12. java swf 上传文件_[Pulgin] 利用swfupload实现java文件批量上传
  13. arm-4-裸板开发
  14. 如何购买一只好的基金
  15. 浅谈欧奈尔对利弗莫尔的继承和发扬
  16. 编辑器 的保存怎么绑定事件_135编辑器有哪些可以快速提升新媒体小编工作效率的功能?...
  17. 解决:Docker Container exited with code 137
  18. macOS上如何通过.crash文件定位崩溃地址
  19. dig的现在分词_现在分词的变化规则(含双写加ing的动词归纳)
  20. 【转载】Oracle 查看执行计划

热门文章

  1. [Irving]SqlServer 拆分函数用法
  2. 如何轻松回收您无法出售的旧电子产品
  3. 和的区别(与) 和 ||和|的区别(或)
  4. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans...
  5. 代码英雄:操作系统之战
  6. Wifi热点java_Wifi热点实现文件传输
  7. 毕业设计 : 题目:基于深度学习的水果识别 设计 开题 技术
  8. Oracle中的LOB字段解读
  9. 排序算法lowB三人组
  10. 学习Java一般多久?