当我使用自定义键盘在Gmail应用程序中输入文字时,每次击键时,屏幕都会“上下”跳动。

我已经找到了“候选视图”的原因(如禁用该视图或高度为零,则屏幕不会跳动)。 Android文档指出:“由于候选视图倾向于被显示和隐藏很多,因此不会像软输入视图那样影响应用程序用户界面:它永远不会导致应用程序窗口大小的改变,只会导致应用程序窗口的大小改变用户需要查看时可以将其平移。”因此,我怀疑“跳转”可能是由Gmail视图平移引起的。

有谁知道如何防止这种“跳跃”的发生,因为这使键盘非常难以使用?

我检查了没有调用setCandidatesViewShown(false),并且自定义Candidate视图的onMeasure方法始终返回正确的高度。

最佳答案

一个完美的解决方案在这里。
只需在InputMethodService中重写以下方法,

@Override
public void onComputeInsets(InputMethodService.Insets outInsets) {
    super.onComputeInsets(outInsets);
    if (!isFullscreenMode()) {
        outInsets.contentTopInsets = outInsets.visibleTopInsets;
    }
}


希望对您有所帮助。

10-04 19:34