Qt for Android - 状态栏颜色

Qt for Android - Statusbar color

有谁知道改变 Qt 应用程序 Android 状态栏颜色的方法吗?

到目前为止,我已经尝试了很多 C++ 解决方案 - 它们似乎都失败了,因为该代码没有 运行 在主 ui 线程中 - 还有一些 xml AndroidManifest.xmlstyles.xml 中的调整 - 这似乎至少影响工具栏* 但不影响状态栏*..

有人可以提供 c++ 解决方案,或者有人用 xml 得到结果吗?

感谢您的帮助!


*关于术语 'statusbar' 和 'toolbar':Android 调用两个不同的 ui 元素 'statusbar'。所以在这种情况下,我打电话给其中之一 'toolbar'。澄清一下:

已解决

感谢Volodymyr Shevchyk

最终解决方案:(我的有点硬编码)

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

使用来自 here and here.

的摘录

确保您使用的是 Qt 5.7 或更高版本。否则 QtAndroid::runOnAndroidThread 将无法工作。

备注

如果您使用白色或其他一些非常明亮的颜色作为背景,可以使用以下代码将状态栏的文本调暗一点:

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