जब प्राइमरीडार्क सफेद हो तो स्टेटस बार टेक्स्ट कलर बदलें


87

मैं Google कैलेंडर एप्लिकेशन के व्यवहार को पुन: पेश करने का प्रयास कर रहा हूं: यहां छवि विवरण दर्ज करें

लेकिन मुझे स्टेटस टेक्स्ट का रंग बदलने का कोई तरीका नहीं मिला है। अगर मैं colorPrimaryDark को सफेद के रूप में सेट करता हूं, तो मैं आइकन नहीं देख सकता और न ही स्टेटस बार का पाठ, क्योंकि उनका रंग भी सफेद है।

क्या स्टेटस बार टेक्स्ट कलर को बदलने का कोई तरीका है?

अग्रिम में धन्यवाद

जवाबों:


174

मुझे यकीन नहीं है कि आपके लक्ष्य को प्राप्त करने के लिए एपीआई स्तर क्या है, लेकिन अगर आप एपीआई 23 विशिष्ट सामान का उपयोग कर सकते हैं, तो आप अपने अप्पेथे स्टाइल.एक्सएमएल में निम्नलिखित जोड़ सकते हैं:

<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>

जब android:windowLightStatusBarसही पर सेट किया जाता है, तो स्टेटस बार टेक्स्ट का रंग तब देखा जा सकेगा, जब स्टेटस बार का रंग सफ़ेद हो, और इसके विपरीत होने android:windowLightStatusBarपर, गलत पर सेट होने पर, स्टेटस बार टेक्स्ट का रंग तब देखा जाएगा, जब स्टेटस बार का रंग देखा जाएगा अंधेरा।

उदाहरण:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- Status bar stuff. -->
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="android:windowLightStatusBar">true</item> 
</style>

38
अगर मेरा एपीआई स्तर 21 है तो यह काम नहीं कर रहा है क्या आप मुझे इसके लिए विकल्प बता सकते हैं
saikrupa

8
आपी 21 के लिए कोई समाधान मिला। कृपया मदद करें?
IMDroid

1
नोट: Android: windowLightStatusBar के लिए एपीआई स्तर 23 (वर्तमान मिनट 21) अधिक आवश्यक है ... (⌘F1)
हार्दिक

आपी 21 के लिए यह संभव नहीं है। Google अनुप्रयोगों में यह एक सफेद के बजाय एक काली पट्टी है।
जॉरिस

1
एपीआई स्तर <23 के लिए यह पोस्ट देखें: stackoverflow.com/questions/49254877/…
बस्ती वागबोंड

30

आप इस उत्तर को प्रोग्रामेटिक रूप से पसंद कर सकते हैं

बस इसे जोड़ें

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

14

यह बहुत सरल है:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);//  set status text dark
getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this,R.color.white));// set status background white

और इसके विपरीत:

getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this, R.color.black));
View decorView = getWindow().getDecorView(); //set status background black 
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); //set status text  light

4

पहले की तरह, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR मेरे मामले में काम करते हैं, एपीआई 22 से अधिक के लिए सेट करना न भूलें।

सेटऑनटेंट व्यू के बाद इसे ऑनक्रीट में जोड़ें:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}

1
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);//  set status text dark

getWindow().setStatusBarColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimaryDark));// set status background white

इससे मेरा काम बनता है


इसके लिए एपीआई स्तर 23+ की आवश्यकता है।
कांजी

0

एक बार यह कोशिश करो।

अपनी गतिविधि onCreate()विधि में, निम्न कोड पेस्ट करें।

try {
        if (android.os.Build.VERSION.SDK_INT >= 21) {
                Window window = getWindow();
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(ContextCompat.getColor(this, R.color.color_red));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

नोट: color_red - स्टेटस बार का रंग है।


2
सवाल स्टेटस बार के टेक्स्ट कलर को लेकर है, स्टेटस बार बैकग्राउंड को नहीं।
कांजी

0

अपनी गतिविधि onCreate()विधि में, निम्न कोड पेस्ट करेंsetContentView(R.layout.activity_generic_main);

यहाँ नीचे नमूना कोड है।

public class GenericMain extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_generic_main);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

    }
}

0

यह प्रयास करें यदि पृष्ठ छप न जाए

getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getActivity().getWindow().setNavigationBarColor(ContextCompat.getColor(context, R.color.white));
getActivity().getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.white));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.