प्रोग्रामेटिक रूप से सफेद करने के लिए गतिविधि का पृष्ठभूमि रंग कैसे सेट करें?


जवाबों:


142

उपयोग किए गए रूट लेआउट के लिए एक हैंडल प्राप्त करें, फिर उस पर पृष्ठभूमि का रंग सेट करें। रूट लेआउट वह है जिसे आपने setContentView कहा है।

 setContentView(R.layout.main);

  // Now get a handle to any View contained 
  // within the main layout you are using
  View someView = findViewById(R.id.randomViewInMainLayout);

  // Find the root view
  View root = someView.getRootView();

  // Set the color
  root.setBackgroundColor(getResources().getColor(android.R.color.red));

जब मैं ऐसा करता हूं, तो एक्लिप्स इसे संसाधन आईडी के बजाय हल किए गए रंग को पास करना चाहिए: getResources ()। GetColor (android.R.color.red)।
13

25
अंतिम पंक्ति कोroot.setBackgroundColor(getResources().getColor(android.R.color.red));
लुइस मेंडो

यह उत्तर काम करता है; लेकिन यह अभी भी प्रश्नकर्ता के अनुसार पूरी तरह से प्रोग्रामेटिक नहीं है। मैं नीचे अरुणकुमार के उत्तर का सुझाव दूंगा।
केविश

263

setContentView()कॉल के बाद अपनी गतिविधि में इस एकल पंक्ति को जोड़ें

getWindow().getDecorView().setBackgroundColor(Color.WHITE);

4
माना। यह रूट लेआउट लागू होने से पहले विंडो का रंग बदलता है, स्वीकृत उत्तर गतिविधि के लेआउट में रूट तत्व का रंग बदलता है
LairdPleng

1
मुझे लगता है कि यह सही होना चाहिए, यदि आप गतिविधि की पृष्ठभूमि का रंग निर्धारित करना चाहते हैं।
शांवु २०'१४

मेरे +1 के रूप में यह रूट विंडो का रंग बदलता है
mparkes

यह निश्चित रूप से सबसे अच्छा जवाब है
1QuickQuestion

ऐसा करने के लिए यह सबसे आसान तरीका है। वास्तव में स्वीकार किए जाते हैं की तुलना में बेहतर!
दीनिथ

85

मैं थीम के हिसाब से रंग पसंद करती हूं

<style name="CustomTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@color/custom_theme_color</item>
    <item name="android:colorBackground">@color/custom_theme_color</item>
</style>

22
WindowBackground और ColorBackground में क्या अंतर है?
एलिकएल्ज़िन-किलाका

1
बस WindowBackground सेट करें और यह ठीक काम करता है। ColorBackground का उपयोग क्या है?
कोडजक्स

8
@ AlikElzin-kilaka: अंतर यह है कि जब ऐप शुरू होता है तो android:windowBackgroundसबसे पहले, एक संक्षिप्त क्षण के लिए दिखाई देता है, और फिर लेआउट पृष्ठभूमि का रंग खत्म हो जाता है। इसलिए यदि आप दो अलग-अलग रंगों का उपयोग करते हैं, तो यह स्क्रीन पर झिलमिलाहट करेगा।
गोत्तो

2
windowBackgroundकेवल खिड़की की पृष्ठभूमि को colorBackgroundप्रभावित करता है , लेकिन सभी विचारों को भी प्रभावित करता है। stackoverflow.com/questions/26266221/…
fdermishin

60
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>

दूसरे शब्दों में, "एंड्रॉइड: बैकग्राउंड" XML में टैग है जिसे आप बदलना चाहते हैं।

यदि आपको पृष्ठभूमि मान को गतिशील रूप से अपडेट करने की आवश्यकता है, तो निम्न देखें:

व्यायाम करें: बैकग्राउंड कलर बदलें, सीकर द्वारा


मम शुभ बिंदु। अच्छी तरह से परवाह किए बिना, लिंक मैं बहुत सुंदर सवाल है कि जवाब दिया।
IMMuch

मुझे नहीं लगता कि आप मुझे रंग के लिए सही मान देते हैं !! मैं इसे #FFFFFF
SJS

यह उन लोगों के लिए एक अच्छा जवाब है जो इसे xml में करना चाहते हैं और एक Google खोज के माध्यम से यहां पहुंचे।
१२:३४ पर केसी जूल

9

आपकी onCreate()विधि में:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

इसके अलावा, आपको एक नई XML फ़ाइल नामक मान फ़ोल्डर में जोड़ने की आवश्यकता है color.xml और वहां एक नया रंग गुण असाइन करें:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

ध्यान दें कि आप अपने color.xmlइच्छित किसी भी नाम को नाम दे सकते हैं लेकिन आप इसे कोड के रूप में देखेंR.color.yourId

संपादित करें

क्योंकि getResources().getColor()वंचित है, getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); इसके बजाय उपयोग करें ।


8

आप इसका उपयोग पूर्वनिर्धारित Android रंगों को कॉल करने के लिए कर सकते हैं:

element.setBackgroundColor(android.R.color.red);

यदि आप अपने स्वयं के कस्टम रंगों में से किसी एक का उपयोग करना चाहते हैं, तो आप अपने कस्टम रंग को स्ट्रिंग्स.xml में जोड़ सकते हैं और फिर कॉल करने के लिए नीचे का उपयोग कर सकते हैं।

element.setBackgroundColor(R.color.mycolour);

हालाँकि यदि आप अपने लेआउट में रंग सेट करना चाहते हैं। तो आप इसे स्वीकार करने वाले किसी भी तत्व में नीचे संशोधित और जोड़ सकते हैं।

android:background="#FFFFFF"

अगर मैं पहली तकनीक का उपयोग करता हूं तो मुझे एक चेतावनी मिलती है कि इसे वास्तव में इस तरह एक्सेस किया जाना चाहिए: getResources ()। GetColor (android.R.color.black);

3

अपनी xml फ़ाइल में रूट दृश्य को परिभाषित करने के लिए, बिना एक्शन बार के, आप इसका उपयोग कर सकते हैं:

View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);

तो, सफेद रंग बदलने के लिए:

root.setBackgroundResource(Color.WHITE);

3
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

मेरे लिए काम किया। धन्यवाद।


यह उत्तर निम्न गुणवत्ता वाले पदों की समीक्षा कतार में है क्योंकि यह बिना किसी स्पष्टीकरण के सिर्फ कोड है। कृपया अपने कोड को यह बताकर सुधारें कि आपका कोड क्या करता है और यह प्रश्न का उत्तर कैसे देता है। कृपया प्रोग्रामिंग सवालों के जवाब देने में इस सलाह को मदद से पढ़ें ।
आदि इनबार

2
किंडा मज़ेदार है कि यह स्पष्ट रूप से नीले रंग की पृष्ठभूमि निर्धारित करता है और अनुरोध के अनुसार सफेद नहीं है।
कोनराड लिंडेनबैच


1
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button)findViewById(R.id.button);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            root =findViewById(R.id.activity_main).getRootView();
            root.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    });
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.