监听系统软键盘的显示与隐藏
2015-12-02 21:37
405 查看
监听系统软键盘的显示与隐藏
关于监听软键盘的显示与隐藏,本人在网上看到这样的方法:自定义view,并重写onSizeChanged()方法,在onSizeChanged(int w, int h,int oldw,int oldh) 方法里监听界面大小的变化来判断软键盘的弹出问题。
但是如果不想多一个文件,又不想自定义view呢?
下面是本人的实现:
在我们的应用中弹出输入法的目的是想在EditText中输入内容,现在本人就通过EditText来实现监听软件盘的显示与隐藏:
private boolean softInputIsHide = true; //输入法是否在显示
private int editPosY = -1; //记录edit在屏幕的初始的位置Y
//下面2个监听用户监听输入法是否弹出
edit.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int[] location = new int[2];
edit.getLocationOnScreen(location);
editPosY = location[1];//保存edit在屏幕的初始Y位置
//DebugUtils.printInfo(TAG, "addOnGlobalLayoutListener edit pos:[" + location[0] + "," + location[1] + "]");
edit.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
edit.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int[] location = new int[2];
edit.getLocationOnScreen(location);
//DebugUtils.printInfo(TAG, "addOnPreDrawListener dh=" + location[1]);
if(editPosY == location[1]){
softInputIsHide = true;
}else{
softInputIsHide = false;
}
return true;
}
});
在本方法中是用来监听当点击EditText时弹出软键盘的(对于页面跳转直接弹出软件盘未做测试),当然AndroidManifest.xml中activity的android:windowSoftInputMode的
部分情形可能对本方法有影响(未测试所有情形)。
注:stateHidden|adjustResize|adjustPan等测试过可行
相关文章推荐
- 解决EditText、ListView以及GridView同时使用,输入法自动跳出来的方法
- android同时控制EditText输入字符个数和禁止特殊字符输入的方法
- Android中EditText实现不可编辑解决办法
- Android编程实现在自定义对话框中获取EditText中数据的方法
- Android编程实现监听EditText变化的方法
- Android文本输入框(EditText)输入密码时显示与隐藏
- Android编程中EditText限制文字输入的方法
- android基础教程之android的listview与edittext冲突解决方法
- Android中EditText和AutoCompleteTextView设置文字选中颜色方法
- Android中实现EditText圆角的方法
- 【MaterialEditText】 Material Design 的 EditText 3ff8
- android之各种布局控件和对话框
- Android开发EditText属性
- Listview 中加上checbox 焦点问题
- EditText添加边框
- android之inputType属性
- Android 开发大坑汇总(持续更新)
- Android开发过程解决软键盘遮住EditText的问题
- EditText输入时显示千分符“,”,限制输入长度,添加输入限制
- android 点击Edittext禁止弹出输入法,亲测有效