由于Gboard
Qt 的最后一次更新似乎在检测它并相应地将输入字段推到其上方时存在问题。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)
任何想法如何使它推动输入字段?