Qt для Android — Цвет строки состояния

Кто-нибудь знает способ изменить цвет строки состояния Android приложения Qt?

До сих пор я пробовал много решений на С ++ — кажется, что все они терпят неудачу, потому что этот код не выполняется внутри основного потока пользовательского интерфейса — и некоторые корректировки XML в AndroidManifest.xml а также styles.xml — это, кажется, влияет по крайней мере на панель инструментов *, но не на строку состояния * ..

Может кто-то может предложить решение C ++, или кто-нибудь достиг результатов с XML?

Спасибо за вашу помощь!


* о терминах «строка состояния» и «панель инструментов»: Android называет два различных элемента пользовательского интерфейса «строка состояния». Так что в этом случае я называю одну из них «панелью инструментов». Чтобы уточнить:

Скриншот

0

Решение

Благодаря Владимир Шевчик

Окончательное решение: (у меня немного хардкод-иш)

QtAndroid::runOnAndroidThread([=]()
{
QAndroidJniObject window = QtAndroid::androidActivity().callObjectMethod("getWindow", "()Landroid/view/Window;");
window.callMethod<void>("addFlags", "(I)V", 0x80000000);
window.callMethod<void>("clearFlags", "(I)V", 0x04000000);
window.callMethod<void>("setStatusBarColor", "(I)V", 0xffffffff); // Desired statusbar color
});                                                      // A R G B

Использование экстрактов из Фрома Вот а также Вот.

Убедитесь, что вы используете Qt версии 5.7 или выше. Иначе QtAndroid::runOnAndroidThread не сработает

Если вы используете белый или другой очень яркий цвет в качестве фона, текст строки состояния можно сделать немного темнее, используя следующий код:

    QAndroidJniObject decorView = window.callObjectMethod("getDecorView", "()Landroid/view/View;");
decorView.callMethod<void>("setSystemUiVisibility", "(I)V", 0x00002000);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]