在网上看很多是重写一个View,如相对布局等,然后在onSizeChanged时做一个回调。这样感觉很麻烦。其实可以在Activity的layout的最顶层View弄一个id,然后通过这个id拿到layout的父View,这样就可以监听了。上代码:
private View root;root = (RelativeLayout) findViewById(R.id.root_view);private void rooViewtListener() {
root.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = root.getRootView().getHeight() - root.getHeight();
Rect rectgle = new Rect();
Window window = getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
if (heightDiff <= contentViewTop) {
// Soft KeyBoard Hidden
softInputHidden();
} else {
// Soft KeyBoard Shown
softInputShown();
}
}
}
);
}这样就简单多了。
本文介绍了一种简单的方法来监听软键盘的状态变化。通过为Activity布局的顶层View添加一个全局布局监听器,在软键盘弹出和隐藏时进行回调,进而判断软键盘的状态。
1575

被折叠的 条评论
为什么被折叠?



