admin管理员组文章数量:1565283
Android没有提供很方便的方法来判断输入法键盘是否显示(或者我没有找到),包括InputMethodManager和Configuration change都没有办法检测,但实际这个功能还是很需要的。
今天终于在stackoverflow发现一种迄今为止最简便的方法,http://stackoverflow/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如何检测输入法键盘是否显示 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727530292a1119494.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论