0

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

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

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

提前致谢

4

1 回答 1

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 的文档

希望能帮助到你!干杯!

于 2016-10-02T09:06:31.173 回答