1

由于GboardQt 的最后一次更新似乎在检测它并相应地将输入字段推到其上方时存在问题。Gboard 版本:9.7.09.323382208-tv_release-armeabi-v7a

在此处输入图像描述

我有一个可以轻松复制的最小代码示例:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

ApplicationWindow {
    width: 1920
    height: 1080
    visibility: Window.Maximized
    color: "#C0C0C0"

    Item
    {
        width: 1920 * 0.7
        height: 1080 * 0.8
        Item {
            width: parent.width
            height: parent.height * 0.4
            id: we
        }
        TextField
        {
            id: input1
            width: parent.width
            focus: true
            anchors.top: we.bottom
            onAccepted: input2.focus = true

            Keys.onPressed:
            {
                switch (event.key) {
                case Qt.Key_Tab:
                case Qt.Key_Down:
                    event.accepted = true
                    input2.forceActiveFocus()
                    break
                }
            }
        }

        TextInput
        {
            id: input2
            width: parent.width
            anchors.top: input1.bottom
            maximumLength: 40

            Keys.onPressed:
            {
                switch (event.key) {
                case Qt.Key_Tab:
                case Qt.Key_Down:
                    event.accepted = true
                    break

                case Qt.Key_Up:
                    event.accepted = true
                    input1.forceActiveFocus()
                    break
                }
            }
        }
    }
}

我尝试使用 Qt 版本进行构建:5.12.9, 5.13.2, 5.14.2,5.15.1并且都有相同的问题。然而,来自 Android 工作室的空项目将正确推送输入字段,因此问题必须与 Qt 相关。

我也尝试设置android:windowSoftInputMode="adjustPan",但它根本没有效果。

我发现的是QtActivityDelegate.javashowSoftwareKeyboard中的 Qt方法,我认为它负责显示键盘和调整布局,所以我尝试使用它(设置一些硬编码值,例如),用更改重建 Qt ,但没有成功或可见更改,它确实打印出我的自定义日志,因此更改正确应用。m_layout.setLayoutParams(m_editText, new QtLayout.LayoutParams(width, 680, 30, 500), false)

任何想法如何使它推动输入字段?

4

0 回答 0