【问题标题】:Android IME suggestions view overlaps applicationAndroid IME 建议视图与应用程序重叠
【发布时间】:2019-08-20 05:40:56
【问题描述】:

在我的软件键盘中,候选人视图与用户应用程序重叠并隐藏了 UI 的底部。

这发生在 Android 6.0 及更高版本中。相同的 APK 在 Android 4.4 中运行良好。键盘视图和候选视图的 onMeasure() 处理程序以下列方式实现:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    // super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int rwidth = MeasureSpec.getSize(widthMeasureSpec);
    int w = Math.min(InputViewMetrics.screenWidth, rwidth);
    int h = InputViewMetrics.candidatesViewHeight;
    this.setMeasuredDimension(w, h);
}

我还根据输入模式使用 true 或 false 调用 setCandidatesViewShown(),但切换候选视图并不能修复重叠。同样,这种行为在以前的 Android 版本中不会发生。编译该应用程序是为了与清单中的以下行兼容:

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="26" />

可以做些什么来解决这种重叠?当候选人视图可见性发生变化时,如何确保用户应用刷新其布局?

【问题讨论】:

  • 是不是跟adjustpan、adjustsize之类的东西有关
  • @ManojPerumarath 该应用会调整其 UI 的大小,但会忽略其他候选人视图。在计算尺寸调整时,似乎候选视图在更高版本的 android 中被放弃了。但我需要防止来自 IME,而不是来自我无法控制的用户应用程序。
  • 当前焦点在蓝色视图,它也是一个输入视图,所以android忽略它下面的所有视图。这就是原因
  • @ManojPerumarath 在 Android 4.4 中,当切换候选视图时,顶视图会正确调整。在 Android 6.0 中,顶视图只调整到键盘高度,而不是候选视图高度。
  • 屏幕大小和屏幕密度呢,@bkxp

标签: android view keyboard ime


【解决方案1】:

这有点晚了,但可能对其他人有帮助。我修复了它,覆盖了 onComputeInsets:

override fun onComputeInsets(outInsets: Insets?) {
    super.onComputeInsets(outInsets)
    if (!isFullscreenMode) {
        outInsets?.contentTopInsets = outInsets?.visibleTopInsets
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2022-12-11
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2023-02-12
    • 1970-01-01
    相关资源
    最近更新 更多