【问题标题】:Keyboard height on AndroidAndroid 上的键盘高度
【发布时间】:2017-02-10 10:36:44
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

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


    【解决方案1】:
    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

    希望对您有所帮助!干杯!

    【讨论】:

    • 非常感谢您的回答。我需要activity有adjustResize而不是adjustPan,否则一些不应该被剪切的视图会被剪切。
    猜你喜欢
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多