2012-01-28 12 views
14

मैं एक आवेदन लिखकर स्टेटस बार का पृष्ठभूमि रंग बदलना चाहता हूं। मेरे एंड्रॉइड डिवाइस में काला रंग है, मैं इसे किसी अन्य रंग में बदलना चाहता हूं। मैंने यहां से संबंधित कुछ पोस्ट देखी हैं, लेकिन वे अधिसूचना पृष्ठभूमि के बारे में बता रहे हैं।एंड्रॉइड स्टेटस बार के पृष्ठभूमि रंग को कैसे बदलें

यदि कोई शरीर इसके बारे में जानता है तो कृपया मेरी मदद करें।

डिफ़ॉल्ट स्थिति पट्टी

enter image description here

स्थिति पट्टी करने के लिए पृष्ठभूमि के रूप में एक drawable इस्तेमाल करने के बाद

enter image description here

उत्तर

12

क्षमा करें, जब तक आप एक कस्टम रॉम यह संभव नहीं है कर रहे हैं, जब तक कि आप केवल अपने ऐप के लिए स्टेटस बार बदलना नहीं चाहते हैं।

इसके लिए बहुत सारे काम की एक बिल्ली की आवश्यकता होगी।

पहले तुम फिर अपने प्रकट

<application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     > 

को Theme.NoTitleBar.Fullscreen जोड़ने के लिए एक बार आप किया है कि आप एक मानक लेआउट जो स्थिति पट्टी का प्रतिनिधित्व करता है बनाने की जरूरत की आवश्यकता होगी, इसका मतलब यह होगा कि आपके पास समय जोड़ने के लिए, और अन्य ऐप्स से सभी अधिसूचनाएं प्राप्त करने के लिए, मुझे व्यक्तिगत रूप से यह नहीं पता कि यह कैसे करना है, लेकिन मुझे यकीन है कि एक तरीका है।

यदि आप वास्तव में यह अच्छा करना चाहते हैं, तो आपके पास एक कठिन समय है।


क्षमा करें, जब तक कि आप जानते है कैसे निर्माण कस्टम रोम की मुझे नहीं लगता कि यह संभव

11

यह Kitkat पर और बाद संभव है है।

आप एक आवेदन में इसका उपयोग करना (जैसे आप से पूछा) चाहते हैं, तो आप इस पुस्तकालय https://github.com/jgilfelt/SystemBarTint

इस्तेमाल कर सकते हैं आप केवल लिखने के लिए की जरूरत है:

// set a custom tint color for all system bars 
tintManager.setTintColor(Color.parseColor("#99000FF")); 
// set a custom navigation bar resource 
tintManager.setNavigationBarTintResource(R.drawable.my_tint); 
// set a custom status bar drawable 
tintManager.setStatusBarTintDrawable(MyDrawable); 
1

यदि अपडेट करना चाहते हैं आपके एडीटी और एसडीके और सभी संबंधित सामानों को अपग्रेड किए बिना लॉलीपॉप पर स्टेटस बार रंग, आप एपीआई 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 

आशा है कि यह किया था

+0

17 के लिए काम नहीं:

यह कर के लिए प्रोग्राम के रूप में यह कर java.lang.NoSuchMethodException: setStatusBarColor [int] – djdance

7

शैलियों में मदद की।लॉलीपॉप पर और बाद में इस सक्षम करने के लिए

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light"> 
     <item name="colorPrimary">@color/color_primary</item> 
     <item name="colorPrimaryDark">@color/color_secondary</item> 
     <item name="colorAccent">@color/color_accent</item> 
     <!---Below is the code for status bar color------> 
     <item name="android:statusBarColor">@color/color_primary</item> 
    </style> 
</resources> 

प्लेस यह आपके मान-V21/styles.xml में है,: एक्सएमएल यह करते हैं।

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));` 
संबंधित मुद्दे