Hello Android开发者,
我们可以通过设置 OnGlobalLayoutListener 来检测软键盘。
当窗口高度发生变化时,我们可以根据知道键盘是否可见来进行一些计算。 lot of discussion you can find here (link) 当我们使用 windowSoftInputMode 作为 adjustResize
时,这将有效在我的场景中,我使用 adjustPan 作为windowSoftInputMode,当软键盘可见时,窗口大小不会改变。 (不要告诉将windowSoftInputMode更改为" adjustResize ")
我知道我们可以在Context.INPUT_METHOD_SERVICE中使用isAcceptingText实现,但我无法实现这一点,因为我的应用程序中有很多EditView。
我知道他们没有任何用于收听软键盘可视性的广播接收器。
它们是否能够实现/检测软键盘可视性和隐藏/隐藏
请提出你的想法。提前感谢您的回答。
答案 0 :(得分:0)
这对我有用:
使用此方法获取软键盘高度:
public static int getSoftKeyboardHeight(Activity activity, int screenHeight) {
Rect r = new Rect();
View rootview = activity.getWindow().getDecorView();
rootview.getWindowVisibleDisplayFrame(r);
return screenHeight - r.height();
}
如果返回的高度为0表示键盘不可见,则键盘可见。 请注意,这应该是连续运行的(当怀疑键盘被打开/关闭时),所以我认为建议为此检查生成一个单独的线程,以免在UI线程上执行额外的工作。