Android如何监听输入框的出现和隐藏
16lz
2021-01-23
类实现:
public SoftKeyboardState(Activity activity) { this.decorView = activity.findViewById(android.R.id.content); initKeyboardListener(); } private void initKeyboardListener() { decorView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener(){ private final Rect windowVisibleDisplayFrame = new Rect(); private int lastVisibleDecorViewHeight; @Override public void onGlobalLayout() { decorView.getWindowVisibleDisplayFrame(windowVisibleDisplayFrame); final int visibleDecorViewHeight = windowVisibleDisplayFrame.height(); Log.i(TAG," onGlobalLayout called " + visibleDecorViewHeight+ " "+ lastVisibleDecorViewHeight); if (lastVisibleDecorViewHeight != 0) { if (lastVisibleDecorViewHeight - visibleDecorViewHeight > 200) { if (listener != null)listener.onKeyboardStateChanged(true); } else if (visibleDecorViewHeight - lastVisibleDecorViewHeight > 200) { if (listener != null)listener.onKeyboardStateChanged(false); } } lastVisibleDecorViewHeight = visibleDecorViewHeight; } }); } public void setOnKeyboardStateChangedListener(OnKeyboardStateChangedListener listener) { this.listener = listener; } public interface OnKeyboardStateChangedListener { void onKeyboardStateChanged(boolean isShown); }}
注意以上类只能监听普通的activity,如果theme中有如下设置,会不生效:
- true
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer