android 监听系统键盘显隐
16lz
2021-01-26
//系统键盘是否显示
private boolean isKeyBoardShow;
private ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { isKeyBoardShow = isKeyboardShow(mLayoutRoot);//mLayoutRoot为根布局 if (isKeyBoardShow) {
//TODO 系统键盘显示 } else{ //TODO 系统键盘隐藏
} }};
private void initViews(){
//mLayoutRoot为根布局
ViewTreeObserver viewTreeObserver = mLayoutRoot.getViewTreeObserver();viewTreeObserver.addOnGlobalLayoutListener(mOnGlobalLayoutListener);
}
@Overrideprotected void onDestroy() { ViewTreeObserver viewTreeObserver = mLayoutOuter.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener); } else { viewTreeObserver.removeOnGlobalLayoutListener(mOnGlobalLayoutListener); } } super.onDestroy();}
/** * 是否软键盘显示 * * @param rootView * @return */private boolean isKeyboardShow(View rootView) { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r);//获取当前窗口可视区域大小(不包含键盘遮挡部分) int heightDiff = r.bottom - rootView.getBottom();//所以可以据此判断键盘是否显示 return heightDiff < 0;}
更多相关文章
- 使用DatePicker以及TimePicker显示当前日期和时间
- 使用系统API的SQLite
- Dialog修改密码的显示方式小巧写法
- android中Button显示两行字体(spannable)
- Android键盘弹出的研究
- Android基础教程——调节系统屏幕亮度
- gridView ---图片显示类九宫格
- 自定义的dailog
- Android(安卓)editText自动弹出软键盘