Android上的键盘高度

时间:2016-10-02 08:57:18

标签: android android-softkeyboard android-windowmanager android-viewtreeobserver

通过执行ViewTreeObserver.OnGlobalLayoutListener,我在Android上获得了键盘的高度:

final Rect r = new Rect();
mRootLayout.getWindowVisibleDisplayFrame(r);
int screenHeight = mRootLayout.getRootView().getHeight();
final int keyboardHeight = screenHeight - (r.bottom);

我的问题是,在某些设备上,我的键盘高度是状态栏高度的两倍。到底是怎么回事?我怎么能解决这个问题?

提前致谢

1 个答案:

答案 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

希望它有所帮助!干杯!