2017-09-20 71 views
0

有誰知道一種方法來更改Qt應用程序的Android狀態欄顏色?Qt for Android - 狀態欄顏色

到目前爲止,我已經嘗試了很多C++的解決方案 - 他們都忽視了,因爲該代碼不會在主UI線程中運行 - 在AndroidManifest.xmlstyles.xml一些XML的調整 - 這似乎至少影響工具欄*,但不是狀態欄* ..

有人可能會提供一個c + +解決方案,或有任何人用xml達到結果嗎?

感謝您的幫助! *關於術語「狀態欄」和「工具欄」:Android調用兩個不同的UI元素'狀態欄'。所以在這種情況下,我打電話給他們其中一個'工具欄'。澄清:

Screenshot

回答

0

解決

由於Volodymyr Shevchyk

最終溶液:(礦是有點硬編碼-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 

使用提取弗羅姆herehere

請確保您使用的是Qt 5.7或更高版本。否則QtAndroid::runOnAndroidThread將無法​​正常工作。

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

如果你使用白色,或其他一些非常鮮豔的顏色作爲背景,狀態欄的文本可以使用下面的代碼做了一個有點暗