有时候在开发过程中需要监听软键盘的显示状态,在显示和隐藏键盘时对UI做出相应的调整。Android官方没有提供获取软键盘高度和状态的方法,但是可以通过监听当前应用的高度变化计算
出软键盘的高度。
首先获取到activity布局的最外层layout,通过调用getWindowVisibleDisplayFrame获取到整个应用可以显示的区域,这其中包括ActionBar和状态栏,但不含设备底部的虚拟按键。
再通过调用getRootView().getHeight(),获取整个屏幕的高度。同样,这个高度也不含虚拟按键的高度。
通过比较这两个高度,可以推断出软键盘是否显示,并且获取到软键盘的高度。
需要注意的是,这种方法前提是软键盘会影响界面布局,所以需要在AndroidManifest里给activity添加android:windowSoftInputMode=”adjustResize”。
具体实现代码如下:
private LinearLayout layout_main;
private TextView text;
// 状态栏的高度
private int statusBarHeight;
// 软键盘的高度
private int keyboardHeight;
// 软键盘的显示状态
private boolean isShowKeyboard;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activi