दिलचस्प पोस्ट
पीप तोड़ा कैसे DistributionNotFound त्रुटि को ठीक करने के लिए? क्या बीश में एक "गोटो" कथन है? VB.NET में यादृच्छिक पूर्णांक urlencoded फॉरवर्ड स्लैश यूआरएल टूट रहा है PHP एईएस एन्क्रिप्ट / डिक्रिप्ट दूसरी पंक्ति पर सीएसएस एलिप्सिस कैसे एक Django दृश्य में 2 या अधिक क्वेरीज़ गठबंधन करने के लिए? सीएसएस का इस्तेमाल करते हुए होवर पर एक छवि पर एक ज़ूम प्रभाव बनाना है? PHP त्रुटि: Mysqli_real_escape_string () अपेक्षा करते हैं कि 2 पैरामीटर, 1 दिए गए हैं WAMP में memcache को सक्षम कैसे करें वीबीए (एक्सेल) में एक रेगेक्स मैच रिटर्न करना MySQL में एक को छोड़कर सभी डुप्लिकेट पंक्तियाँ हटाएं? JQuery के साथ इनपुट अक्षम / सक्षम करें? स्ट्रिंग को दूसरे में जावा में बदलें विभिन्न लंबाई के दो डेटा फ्रेम के संयोजन

एंड्रॉइड में स्टेटस बार का रंग कैसे बदल सकता है

सबसे पहले यह एक एंड्रॉइड स्टेटस बार के पृष्ठभूमि का रंग बदलने के तरीके के रूप में डुप्लिकेट नहीं है

मैं स्टेटस बार का रंग कैसे बदल सकता हूं, जो कि नेविगेशन बार के समान होना चाहिए I

मैं चाहता हूं कि स्थिति पट्टी रंग नेविगेशन पट्टी रंग के समान हो

यहां छवि विवरण दर्ज करें

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड में स्टेटस बार का रंग कैसे बदल सकता है"

एंड्रॉइड 5.0 लॉलीपॉप ने सामग्री डिज़ाइन थीम की शुरुआत की जो थीम के रंगप्रकाशित डार्क मान पर आधारित स्टेटस बार को स्वचालित रूप से रंग देती है।

यह डिवाइस प्री-लॉलीपॉप पर समर्थित है, पुस्तकालय समर्थन- v7-appcompat संस्करण 21 से शुरू होने पर धन्यवाद । क्रिस बैन्स से समर्थन एम्पैम्पेट v21 के बारे में ब्लॉगपोस्ट

यहां छवि विवरण दर्ज करें

आधिकारिक एंड्रॉइड डेवलपर्स वेबसाइट पर सामग्री विषय के बारे में अधिक पढ़ें

अद्यतन करें:

लॉलीपॉप:

 public abstract void setStatusBarColor (int color) 

एपीआई स्तर 21 में जोड़ा गया

एंड्रॉइड लॉलीपॉप ने अपने ऐप के लिए और अधिक immersive उपयोगकर्ता अनुभव के लिए और Google की Material Design Guidelines के साथ ट्यून करने के लिए इसके साथ स्थिति बार का रंग बदलने की क्षमता लाई है।

यहां बताया गया है कि आप API level 21 में पेश की गई नई window.setStatusBarColor विधि का उपयोग करते हुए स्टेटस बार का रंग बदल सकते हैं।

स्टेटस बार के रंग को बदलने से भी विंडो पर दो अतिरिक्त झंडे सेट करने की आवश्यकता होती है; आपको FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS झंडा जोड़ने और FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS ध्वज साफ़ करने की FLAG_TRANSLUCENT_STATUS

कार्य संहिता:

 Window window = activity.getWindow(); // clear FLAG_TRANSLUCENT_STATUS flag: window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // finally change the color window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color)); 

आधिकारिक: http://developer.android.com/reference/android/view/Window.html#setStatusBarColor ( प्रायः )

उदाहरण: भौतिक-डिजाइन-हर जगह

https://chris.banes.me/2014/10/17/appcompat-v21/

यहां छवि विवरण दर्ज करें

दृश्य पृष्ठभूमि के लिए संक्रमण नाम " android:status:background " होगा

यह आपके मान-v21 / styles.xml रखें, यह लॉलीपॉप पर सक्षम करने के लिए:

 <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> <item name="android:statusBarColor">@color/color_primary</item> </style> </resources> 

यह किसी भी लाइब्रेरी के बिना ऐसा करने का बहुत आसान तरीका है: यदि ओएस संस्करण समर्थित नहीं है – किटकैट के तहत – ऐसा कुछ भी नहीं है। मैं यह कदम उठाता हूं:

  1. मेरे एक्सएमएल में मैं इस शीर्ष पर जोड़ा गया देखें:
 <View android:id="@+id/statusBarBackground" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

तो मैंने यह तरीका बनाया है:

  public void setStatusBarColor(View statusBar,int color){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //status bar height int actionBarHeight = getActionBarHeight(); int statusBarHeight = getStatusBarHeight(); //action bar height statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight; statusBar.setBackgroundColor(color); } } 

आपको एक्शन बार और स्टेटस बार की ऊँचाई प्राप्त करने के लिए उन दोनों तरीकों की भी आवश्यकता है:

 public int getActionBarHeight() { int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); } return actionBarHeight; } public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; } 

तो स्टेटस बार रंग सेट करने के लिए आपको केवल एक चीज की आवश्यकता है:

 setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white)); 

खैर, Izhar समाधान ठीक था लेकिन, व्यक्तिगत रूप से, मैं कोड से बचने का प्रयास कर रहा हूं जो इस रूप में दिखता है:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //Do what you need for this SDK }; 

साथ ही, मैं कोड डुप्लिकेट नहीं करना चाहता हूं आपके उत्तर में मुझे सभी क्रियाकलापों में कोड की इस पंक्ति को जोड़ना होगा:

 setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white)); 

इसलिए, मैंने Izhar समाधान लिया और उसी परिणाम प्राप्त करने के लिए XML का इस्तेमाल किया: StatusBar status_bar.xml के लिए एक लेआउट बनाएं

 <View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="@dimen/statusBarHeight" android:background="@color/primaryColorDark" android:elevation="@dimen/statusBarElevation"> 

ऊँचाई और ऊंचाई गुणों पर ध्यान दें, ये मूल्यों में सेट हो जाएंगे, मूल्य- v19, values-v21 आगे नीचे।

इस लेआउट को अपने क्रियाकलाप लेआउट में शामिल करें, main_activity.xml में शामिल करें:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/Black" > <include layout="@layout/status_bar"/> <include android:id="@+id/app_bar" layout="@layout/app_bar"/> //The rest of your layout </RelativeLayout> 

टूलबार के लिए, शीर्ष हाशिया विशेषता जोड़ें:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:background="@color/primaryColor" app:theme="@style/MyCustomToolBarTheme" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" android:elevation="@dimen/toolbarElevation" android:layout_marginTop="@dimen/appBarTopMargin" android:textDirection="ltr" android:layoutDirection="ltr"> 

अपने ऐप में थीम शैली- v19.xml और शैलियों- v21.xml, खिड़की जोड़ें ट्रान्सस्लेविसेंट एट्रि:

शैलियों- v19.xml, v21:

 <resources> <item name="android:windowTranslucentStatus">true</item> </resources> 

और अंत में, आपके आयाम पर, dimens-v19, dimens-v21, टूलबार TopMargin के लिए मान जोड़ें, और स्थिति की ऊंचाई BarHight: किटकैट से कम के लिए dimens.xml:

 <resources> <dimen name="toolbarElevation">4dp</dimen> <dimen name="appBarTopMargin">0dp</dimen> <dimen name="statusBarHeight">0dp</dimen> </resources> 

स्टेटस बार की ऊंचाई हमेशा किटकैट के लिए और ऊपर 24dp dimens-v19.xml है:

 <resources> <dimen name="statusBarHeight">24dp</dimen> <dimen name="appBarTopMargin">24dp</dimen> </resources> 

Lolipop के लिए dimens-v21.xml, यदि आवश्यक हो तो बस ऊंचाई जोड़ें:

 <resources> <dimen name="statusBarElevation">4dp</dimen> </resources> 

यह जेलीबीन किटकैट और लॉलीपॉप का परिणाम है:

यहां छवि विवरण दर्ज करें

यह किटकैट में मेरे लिए और अच्छे परिणाम के साथ काम करने वाला है।

 public static void setTaskBarColored(Activity context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = context.getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //status bar height int statusBarHeight = Utilities.getStatusBarHeight(context); View view = new View(context); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); view.getLayoutParams().height = statusBarHeight; ((ViewGroup) w.getDecorView()).addView(view); view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar)); } } 

बस Res / values ​​/ styles.xml में एक नई थीम बनाएं जहां आप "रंगप्रकाशित डार्क" को बदलते हैं जो स्टेटस बार का रंग है:

 <style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimaryDark">@color/colorGray</item> </style> 

और एंड्रॉयड मैनिफ़ेस्ट.एक्सएमएल में गतिविधि विषय को आप जो चाहते हैं, उसे संशोधित करें, अगली गतिविधि पर आप मूल विषय को चुनकर मूल रंग को वापस बदल सकते हैं:

 <activity android:name=".LoginActivity" android:theme="@style/AppTheme.GrayStatusBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

आपके res / values ​​/ colors.xml इस तरह दिखना चाहिए:

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#c6d6f0</color> <color name="colorGray">#757575</color> </resources> 

एक और समाधान:

 final View decorView = w.getDecorView(); View view = new View(BaseControllerActivity.this); final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get()); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight)); view.setBackgroundColor(colorValue); ((ViewGroup)decorView).addView(view); 

यदि आप एंड्रॉइड 4.4 और इसके बाद के संस्करण पर काम करना चाहते हैं, तो यह प्रयास करें। मैं हरप्रीत के जवाब और इस लिंक का संदर्भ देता हूं। Android और पारदर्शी स्थिति पट्टी

सबसे पहले, कॉल करने के लिए सेटटैटस बारकॉल्दर्ड विधि में गतिविधि की क्रय विधि (मैं इसे एक उपयुक्त वर्ग में डाल दिया)। मैं यहां एक छवि का उपयोग करता हूं, आप इसे रंग का उपयोग करने के लिए बदल सकते हैं।

 public static void setStatusBarColored(Activity context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = context.getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); int statusBarHeight = getStatusBarHeight(context); View view = new View(context); view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); view.getLayoutParams().height = statusBarHeight; ((ViewGroup) w.getDecorView()).addView(view); view.setBackground(context.getResources().getDrawable(R.drawable.navibg)); } } public static int getStatusBarHeight(Activity context) { int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } 

पहले: से पहले

बाद: बाद

स्टेटस बार का रंग बदल दिया गया है, लेकिन नौवी बार काट दिया गया है, इसलिए हमें ओन्क्रो बार में मार्जिन या ओफ़्सेट सेट करना होगा।

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height))); layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0); this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams); } 

तब स्टेटस बार इस तरह दिखेगा।

स्टेटस बार

मुझे यह आवश्यकता थी: नेविगेशन ड्रॉवर को ट्रैशेंट स्टेटस बार को ओवरलैप करने के लिए प्रोग्रामेटिक रूप से स्टेटस बार रंग बदलना , इसे पारदर्शी रखते हुए

मैं एपीआई का उपयोग कर ऐसा नहीं कर सकता

 getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color) 

यदि आप यहां कोड की उस पंक्ति से पहले स्टैक अतिप्रवाह में जांचते हैं, तो स्थिति पट्टी की पारदर्शिता के साथ ठोस रूप से सेट करें

 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) 

मैं इस तरह स्थिति बार की रंग और पारदर्शिता का प्रबंधन करने में सक्षम हूं:

  • एंड्रॉइड 4: आप ऐसा नहीं कर सकते हैं, क्योंकि आप एपीआई से स्थिति पट्टी रंग का प्रबंधन नहीं कर सकते हैं … केवल एक चीज जो आप कर सकते हैं वह है स्टेटस बार को पारभासी रूप से सेट करें और स्थिति के तहत यूआई के एक रंगीन तत्व को स्थानांतरित करें। बार। ऐसा करने के लिए आपको खेलना चाहिए

     android:fitsSystemWindows="false" 

    अपने मुख्य लेआउट में यह आपको स्टेटस बार के तहत लेआउट को आकर्षित करने की अनुमति देता है। फिर आपको अपने मुख्य लेआउट के ऊपर कुछ पैडिंग के साथ खेलना होगा।

  • एंड्रॉइड 5 और इसके बाद के संस्करण: आप के साथ एक शैली को परिभाषित करना होगा

     <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@android:color/transparent</item> 

    यह नेविगेशन ड्रॉवर को स्टेटस बार ओवरलैप करने की अनुमति देता है।

    फिर स्थिति पट्टी पारदर्शी रखने के लिए रंग बदलने के लिए आपको स्टेटस बार रंग सेट करना होगा

     drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color)) 

    जहां ड्रॉवर लेआउट को इस तरह परिभाषित किया गया है

     <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true">