Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-87756

Android Gboard overlaps input fields

    XMLWordPrintable

Details

    • Android

    Description

      Since the last update of the `Gboard` Qt seems to have issues with detecting it and push input fields above it accordingly.
      Gboard version: `9.7.09.323382208-tv_release-armeabi-v7a`

      I have a minimal code example in which it can be easily reproduced:

      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
                      }
                  }
              }
          }
      }
      

      I tried to build with Qt versions: `5.12.9`, `5.13.2`, `5.14.2`, `5.15.1` and all have the same issue. However an empty project from Android studio will push the input fields correctly, so the issue must be Qt related.

      I also tried to set `android:windowSoftInputMode="adjustPan"` but it had no effect at all.

      What I found is the Qt `showSoftwareKeyboard` method in QtActivityDelegate.java, I assume it's responsible for displaying the keyboard and adjusting the layouts, so I tried to play around with it a bit (setting some hard-coded values e.g. `m_layout.setLayoutParams(m_editText, new QtLayout.LayoutParams(width, 680, 30, 500), false)`), rebuild Qt with the changes, but with no success or visible changes, it does print out my custom logs so the changes did apply correctly.

      Any ideas how to make it push the input fields?

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            piotrmi Piotr Mikolajczyk
            wiru wiru
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes