Qt for Android - 状态栏颜色
Qt for Android - Statusbar color
有谁知道改变 Qt 应用程序 Android 状态栏颜色的方法吗?
到目前为止,我已经尝试了很多 C++ 解决方案 - 它们似乎都失败了,因为该代码没有 运行 在主 ui 线程中 - 还有一些 xml AndroidManifest.xml
和 styles.xml
中的调整 - 这似乎至少影响工具栏* 但不影响状态栏*..
有人可以提供 c++ 解决方案,或者有人用 xml 得到结果吗?
感谢您的帮助!
*关于术语 'statusbar' 和 'toolbar':Android 调用两个不同的 ui 元素 'statusbar'。所以在这种情况下,我打电话给其中之一 'toolbar'。澄清一下:
已解决
最终解决方案:(我的有点硬编码)
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);
有谁知道改变 Qt 应用程序 Android 状态栏颜色的方法吗?
到目前为止,我已经尝试了很多 C++ 解决方案 - 它们似乎都失败了,因为该代码没有 运行 在主 ui 线程中 - 还有一些 xml AndroidManifest.xml
和 styles.xml
中的调整 - 这似乎至少影响工具栏* 但不影响状态栏*..
有人可以提供 c++ 解决方案,或者有人用 xml 得到结果吗?
感谢您的帮助!
*关于术语 'statusbar' 和 'toolbar':Android 调用两个不同的 ui 元素 'statusbar'。所以在这种情况下,我打电话给其中之一 'toolbar'。澄清一下:
已解决
最终解决方案:(我的有点硬编码)
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);