如何在Android中更改状态栏的颜色

时间:2015-03-11 05:34:13

标签: android

我正在开发一个Android qt应用程序。我想将android状态栏的颜色更改为与我的应用程序背景颜色相同。目前无论我的应用程序的颜色是什么,状态栏仍然是黑色的。有什么方法可以使状态栏的颜色与我的应用程序相同。我不是在我的应用程序中使用Java。我想通过进行更改来实现仅限androidManifest.xml文件。这可能。

3 个答案:

答案 0 :(得分:1)

要更改状态栏颜色,请使用setStatusBarColor(int color)。根据javadoc,我们还需要在Window上设置一些标志。

代码片段:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));  

请注意,根据材料设计指南,状态栏颜色和操作栏颜色应该不同:

ActionBar应使用主500色 StatusBar应使用主700色。

资源:(How to change status bar color to match app in Lollipop? [Android]

答案 1 :(得分:0)

您只需在代码中添加: this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

答案 2 :(得分:0)

这是一个测试项目。重要的代码段是:

QtAndroid::runOnAndroidThread([=]() {
        QAndroidJniObject window = QtAndroid::androidActivity().callObjectMethod("getWindow", "()Landroid/view/Window;");
        window.callMethod<void>("addFlags", "(I)V", FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.callMethod<void>("clearFlags", "(I)V", FLAG_TRANSLUCENT_STATUS);
        window.callMethod<void>("setStatusBarColor", "(I)V", color.rgba());
});

请参阅错误报告:https://bugreports.qt.io/browse/QTBUG-51196

相关问题