Кто-нибудь знает способ изменить цвет строки состояния Android приложения Qt?
До сих пор я пробовал много решений на С ++ — кажется, что все они терпят неудачу, потому что этот код не выполняется внутри основного потока пользовательского интерфейса — и некоторые корректировки XML в AndroidManifest.xml
а также styles.xml
— это, кажется, влияет по крайней мере на панель инструментов *, но не на строку состояния * ..
Может кто-то может предложить решение C ++, или кто-нибудь достиг результатов с XML?
Спасибо за вашу помощь!
* о терминах «строка состояния» и «панель инструментов»: Android называет два различных элемента пользовательского интерфейса «строка состояния». Так что в этом случае я называю одну из них «панелью инструментов». Чтобы уточнить:
Благодаря Владимир Шевчик
Окончательное решение: (у меня немного хардкод-иш)
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);
Других решений пока нет …