Qt Quick QML: SafeArea не работает на устройствах AndroidAndroid

Форум для тех, кто программирует под Android
Anonymous
Qt Quick QML: SafeArea не работает на устройствах Android

Сообщение Anonymous »

Я пытаюсь создать мобильное приложение Qt Quick, используя SafeArea, чтобы ограничить расположение содержимого на экране. Он хорошо работает на настольном компьютере, но когда я запускаю его на своем мобильном устройстве, поля, предоставляемые SafeArea, либо не работают, либо возвращают ноль.
Чтобы попытаться обнаружить проблему, я создал MWE на основе примера, приведенного в документации Qt SafeArea.
На основе этого примера приложение должно выглядеть, как показано ниже. Экран заполнен градиентом SunnyMorning (оранжевый), а безопасная область экрана заполнена градиентом DustyGrass (зеленый). Это изображение взято непосредственно из документации.
Изображение

Мой код MWE с использованием Qt 6.9.1 показан ниже

Код: Выделить всё

import QtQuick
import QtQuick.Controls

ApplicationWindow {
width: 640
height: 480
visible: true
flags: Qt.Window | Qt.ExpandedClientAreaHint | Qt.NoTitleBarBackgroundHint
title: qsTr("Safe Area")
topPadding: 0

Rectangle {
id: parentItem
gradient: Gradient.SunnyMorning
anchors.fill: parent

Rectangle {
id: childItem
gradient: Gradient.DustyGrass

anchors {
fill: parent

topMargin: parent.SafeArea.margins.top
leftMargin: parent.SafeArea.margins.left
rightMargin: parent.SafeArea.margins.right
bottomMargin: parent.SafeArea.margins.bottom
}
}
}
}
При запуске приложения на рабочем столе (Windows 11) приложение работает нормально, как показано ниже. Градиент SunnyMorning виден в строке заголовка, а остальная часть окна представляет собой безопасную область, поэтому она заполнена градиентом DustyGrass.
Изображение

Однако при работе на Android безопасная область (DustyGrass) ошибочно заполняет все окно, и градиент SunnyMorning не виден, как показано ниже. Очевидно, что безопасная область не должна перекрывать строку состояния вверху и элементы управления внизу. В этих областях должен отображаться градиент «Солнечное утро».
Изображение

Как я могу убедиться, что безопасная область работает правильно на устройствах Android?
Возможно полезная информация:
  • DANDROID_ABI:STRING=arm64-v8a
  • DANDROID_NDK:PATH=C:/Users//AppData/Local/Android/Sdk/ndk/27.2.12479018
  • DANDROID_PLATFORM:STRING=android-23
  • Версия инструментов сборки Android: 35.0.1
  • SDK платформы сборки Android: android-35


Подробнее здесь: https://stackoverflow.com/questions/797 ... id-devices

Вернуться в «Android»