通过执行ViewTreeObserver.OnGlobalLayoutListener,我在Android上获得了键盘的高度:
final Rect r = new Rect();
mRootLayout.getWindowVisibleDisplayFrame(r);
int screenHeight = mRootLayout.getRootView().getHeight();
final int keyboardHeight = screenHeight - (r.bottom);
我的问题是,在某些设备上,我的键盘高度是状态栏高度的两倍。到底是怎么回事?我怎么能解决这个问题?
提前致谢
答案 0 :(得分:0)
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
如果您添加此代码,它会在键盘弹出时自动调整屏幕。 但是,通过推动布局来进行调整。这意味着,如果您的布局没有滚动条,则会切断某些视图,除非键盘不再弹出。
PS:您可以在相同活动的应用清单文件中添加相同的代码。
<activity android:name="YOUR ACTIVITY"
android:windowSoftInputMode="adjustPan"/>
windoSoftInputMode的所有可能组合
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified",
"adjustResize", "adjustPan"]
链接:Activity Element, Android's documentation
希望它有所帮助!干杯!