如题,有什么好的方法可以判断软键盘是否弹出?
final int heigh = getWindowManager().getDefaultDisplay().getHeight() /3;
root.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
//弹起事件
if (bottom != 0 && oldBottom != 0 && oldBottom- bottom >heigh) {
if (mListView.getLastVisiblePosition() != mDateArrays.size() - 1) {
mListView.smoothScrollToPosition(mDateArrays.size() -1);
}
}
else if(oldBottom != 0 && bottom != 0 &&(bottom - oldBottom > keyHeight)){
Toast.makeText(MainActivity.this, "监听到软件盘关闭...", Toast.LENGTH_SHORT).show(); }
}
});
在清单文件中添加:android :windowSoftInputMode= "stateAlwaysHidden|adjustResize"
其中root是你的布局文件的根View。
原因:因为一般我们的根View的位置是不会变化的,假如发生了变化,那么就可能是键盘弹起了,所以我们通过判断他的位置变化去判断键盘是否弹起。还有,我们假如是在键盘的弹起事件中去改变View的一些东西,比如更新啊,重绘之类的,尽量通过Handler去做,不要直接在监听的事件里面直接处理。
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.2k 阅读
1 回答564 阅读✓ 已解决
自问自答吧。
给个链接http://toughcoder.net/blog/2015/10/09/android-trick-detect-soft-keyboard-show-slash-hide/