在Activity里
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
View view = getLayoutInflater().inflate(R.layout.activity_main, null);
view.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) {
// 整个屏幕的矩形边界坐标
Rect rect = new Rect();
Display display = getWindowManager().getDefaultDisplay();
display.getRectSize(rect);
// 程序界面的矩形边界坐标
Rect outRect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);
// 整个屏幕高度-状态栏高度,若相等则输入法键盘没有显示,否则键盘已经显示
boolean isKeyboardShow = (rect.bottom - outRect.top) != bottom;
Log.i(TAG, "输入法键盘" + (isKeyboardShow?"显示中":"隐藏中"));
}
});
setContentView(view);
}