यदि अपडेट करना चाहते हैं आपके एडीटी और एसडीके और सभी संबंधित सामानों को अपग्रेड किए बिना लॉलीपॉप पर स्टेटस बार रंग, आप एपीआई 21 (लॉलीपॉप) और उच्च
अपनी गतिविधि मेंके तरीकों तक पहुंचने के लिए प्रतिबिंब का उपयोग कर सकते हैं:
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
// original code, works on Lollipop SDKs
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// window.setStatusBarColor(getResources().getColor(YOUR_COLOR));
try {
// to work on old SDKs
int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = 0x80000000;
window.addFlags(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
Class<?> cls = window.getClass();
Method method = cls.getDeclaredMethod("setStatusBarColor",
new Class<?>[] { Integer.TYPE });
method.invoke(window, Res.color(theme.statusColor));
} catch (Exception e) {
// upgrade your SDK and ADT :D
}
}
मेरे वर्तमान न्यूनतम API 15 है, यदि आप
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
अपने SDK में
नहीं मिल रहा है, तो आप इसे प्रलेखन से मूल्य है प्राप्त कर सकते हैं क्या मैं के साथ
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
आशा है कि यह किया था
स्रोत
2015-06-15 13:33:09
17 के लिए काम नहीं:
यह कर के लिए प्रोग्राम के रूप में यह कर java.lang.NoSuchMethodException: setStatusBarColor [int] – djdance