在部分安卓機型遇到 SoftInputMode 設置 adjustPan / adjustResize 無效的情況。於是對鍵盤做了單獨的監聽,方便統一處理
private int oldDiff = 0;
@Override
protected void onCreate(...) {
listenKeyboardVisible();
}
private void listenKeyboardVisible() {
final View activityRoot = getWindow().getDecorView();
if (activityRoot ==null) {
return;
}
mainContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
private final Rect r =new Rect();
@Override
public void onGlobalLayout() {
activityRoot.getWindowVisibleDisplayFrame(r);
int diff = activityRoot.getRootView().getHeight() -r.height();
//鍵盤是否彈出
boolean isOpen = (diff > 200);
if(diff!=oldDiff){
Log.d("keyboard", "keyboard open: "+isOpen);
oldDiff = diff;
// do someting...
}
}
});
}
