2017-09-20 4 views
0

Kennt jemand eine Möglichkeit, die Android-Statusleiste Farbe einer Qt-Anwendung zu ändern?Qt für Android - Statusbar Farbe

Bisher habe ich viele C++ - Lösungen ausprobiert - alle scheinen zu scheitern, weil dieser Code nicht innerhalb des Haupt-ui-Threads läuft - und einige xml-Anpassungen in AndroidManifest.xml und styles.xml - das zumindest zu beeinflussen scheint die Symbolleiste * aber nicht die Statusleiste * ..

Kann jemand vielleicht eine C++ Lösung anbieten, oder hat jemand Resultate mit xml erreicht?

Danke für Ihre Hilfe!


* über die 'Statusbar' Begriffe und 'Toolbar': Android ruft zwei verschiedene 'statusbar' ui Elemente. In diesem Fall rufe ich eine von ihnen 'toolbar' auf. Zur Klarstellung:

Screenshot

Antwort

0

Gelöst

Dank Volodymyr Shevchyk

Endlösung: (Mine ist ein bisschen hard-ish)

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 

Verwendung von Extrakten frome here und here.

Stellen Sie sicher, dass Sie auf Qt-Version 5.7 oder höher sind. Andernfalls wird QtAndroid::runOnAndroidThread nicht funktionieren.

Hinweis

Wenn Sie weiß verwenden, oder einige andere sehr helle Farbe als Hintergrund, der Text der Statusbar kann etwas dunkler mit dem folgenden Code vorgenommen werden:

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