एंड्रॉइड लेआउट तत्व की पृष्ठभूमि का रंग सेट करना


198

मैं कोशिश कर रहा हूं, एंड्रॉइड यूआई डिजाइन पर स्लाइड के एक सेट से कुछ गतिविधि के डिजाइन को क्लोन करूं । हालाँकि मुझे एक बहुत ही साधारण काम में समस्या हो रही है।

मैंने चित्र में दिखाया गया लेआउट बनाया है, और हेडर एक TextViewमें है RelativeLayout। अब मैं पृष्ठभूमि का रंग बदलना चाहता हूं RelativeLayout, हालांकि मैं यह पता नहीं लगा सकता कि कैसे।

मुझे पता है कि मैं XML फ़ाइल में टैग में android:backgroundसंपत्ति सेट कर सकता हूं RelativeLayout, लेकिन मैं इसे क्या सेट कर सकता हूं? मैं एक नए रंग को परिभाषित करना चाहता हूं जिसे मैं कई स्थानों पर उपयोग कर सकता हूं। यह एक drawableया एक है string?

इसके अलावा मैं ग्रहण एंड्रॉइड यूआई डिजाइनर के भीतर से यह एक बहुत ही सरल तरीका होने की उम्मीद कर रहा हूं कि मुझे गायब होना चाहिए?

मैं वर्तमान में थोड़ा निराश हूं, क्योंकि यह एक ऐसी गतिविधि होनी चाहिए जो अधिकतम कुछ क्लिकों के साथ की जाती है। तो किसी भी मदद की बहुत सराहना की है। :)

Android गतिविधि डिज़ाइन


28
आपने दाईं ओर ग्राफ खींचने के लिए किस सॉफ्टवेयर का उपयोग किया?
लुकास

8
@ लुकास: मैंने आरेख नहीं बनाए हैं, जैसा कि मैंने प्रश्नों में उल्लेख किया है, यह एंड्रॉइड यूआई डिज़ाइन पर स्लाइड के एक सेट से है। प्रश्न में लिंक देखें।
बजरैक फ्रायंड-हैन्सन

जवाबों:


280

आप साधारण रंग संसाधनों का उपयोग कर सकते हैं , आमतौर पर अंदर निर्दिष्ट होते हैं res/values/colors.xml

<color name="red">#ffff0000</color>

और इसके माध्यम से उपयोग करें android:background="@color/red"। इस रंग का उपयोग कहीं और भी किया जा सकता है, जैसे कि पाठ रंग। इसे उसी तरह XML में संदर्भ दें, या कोड के माध्यम से प्राप्त करें getResources().getColor(R.color.red)

आप किसी भी ड्रा करने योग्य संसाधन को बैकग्राउंड के रूप में उपयोग कर सकते हैं , इसके लिए उपयोग android:background="@drawable/mydrawable"करें (इसका मतलब है कि 9patch ड्रॉबल्स, सामान्य बिटमैप्स, शेप ड्रॉबल्स, ..)।


6
एक आकर्षण की तरह काम करता है, धन्यवाद। क्या आप मुझे उस संदर्भ की ओर संकेत कर सकते हैं जहां मुझे यह पढ़ना चाहिए था?
बजर्के फ्रायंड-हैनसेन

6
उह वास्तव में: नहीं, बस डॉक्स की खोज की, यह सुंदर मानक एंड्रॉइड सामान है, लेकिन लगता है कि वास्तव में दस्तावेज नहीं है। देव साइट पर न तो ट्यूटोरियल और न ही एपीआई नमूने इस का उपयोग करते हैं। कुछ फीचर्स की बात करें तो android doc में कुछ कमी है। मुझे लगता है कि मैंने इसे कुछ बाहरी ट्यूटोरियल में दुर्घटना से उठाया था। हालांकि यह एपीआई के नमूनों और नमूना परियोजनाओं को ब्राउज़ करना एक अच्छा विचार है। आप ANDROID_SDK\samplesफ़ोल्डर के अंदर (विभिन्न Android संस्करणों के लिए) कोड पा सकते हैं । संपूर्ण एपि नमूना ऐप भी प्रत्येक एमुलेटर उदाहरण में पूर्वस्थापित होता है।

2
इसके अलावा बस यूआई डिजाइनर की जाँच करें। कुछ भी आसान नहीं मिला। लेकिन मैं वैसे भी xml में हाथ से लिखने की सलाह देता हूं। डिजाइनर ने हाल ही में बहुत सुधार किया, लेकिन यह अभी भी मेरी राय में उपयोग करने योग्य नहीं है। न केवल कुछ विकल्प सीमित हैं, लेआउट कभी-कभी एक वास्तविक डिवाइस पर पूरी तरह से अलग दिखता है (विशेषकर संदर्भित संदर्भित संसाधनों का उपयोग करते समय। वे सही तरीके से नहीं मिलते हैं या मेरे अनुभव में बिल्कुल भी प्रदर्शित नहीं होते हैं) । अपने उपकरण या किसी एमुलेटर पर अपने लेआउट का परीक्षण करें।

1
कुछ "डिफ़ॉल्ट" रंगों के लिए, आप इस वाक्यविन्यास का उपयोग कर सकते हैं: android: background = "@ android: color / white"
dalf

1
getResources ()। getColor () अब हटा दिया गया है।
रोहित बंडिल

90

उपरोक्त उत्तर अच्छे हैं। यदि आप चाहें तो आप इस तरह से प्रोग्रामेटिक रूप से भी जा सकते हैं

सबसे पहले, आपके लेआउट में एक आईडी होनी चाहिए। इसे +idरेस / लेआउट / * xml में निम्नलिखित पंक्ति लिखकर जोड़ें

<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

फिर, अपने जावा कोड में, निम्नलिखित बदलाव करें।

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

इसके अलावा, यदि आपके पास रंगों में परिभाषित है। xml, तो आप प्रोग्रामेटिक रूप से भी कर सकते हैं:

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));

24
यदि आप इसे गतिशील चाहते हैं, तो मुझे लगता है कि आप XML का उपयोग नहीं कर सकते।
गुइलेर्मो गुतिरेज़

1
+1 के लिए मुझे स्थिति ध्वज के अनुसार रनटाइम पर इसे बदलने की आवश्यकता है; मैं Color.TRANSPARENT निरंतर का उपयोग करके मूल रंग वापस लाने में भी सक्षम था।
Zac

10
@ BjarkeFreund-Hansen वह अन्य उत्तरों को स्वीकार करता है और यह प्रोग्रामेटिक समाधान प्रदान करता है। योग्य नहीं है।
आउबियान नोब जूल

4
@ BjarkeFreund-Hansen, सवाल यह है कि पृष्ठभूमि को कैसे निर्धारित किया जाए कि रंग कैसे परिभाषित करें, ठीक से पढ़ें। और इसलिए यदि प्रश्न उस पर है। मैंने स्वीकार किया और कहा कि "आप भी इस तरह जा सकते हैं" .... इसलिए वह जा सकता है या नहीं। यह भी दूसरों की मदद कर सकता है क्योंकि यह पहले से ही आप देख सकते हैं। क्या आप ??
एंड्रॉयड किलर

7
प्लस टू @ मर्ज की भरपाई करने के लिए @ BjarkeFreund-Hansen
राहुल

42

आप अपने रंग के लिए android:background="#DC143C"या किसी अन्य RGB मान का उपयोग कर सकते हैं । मुझे इस तरह से इसे इस्तेमाल करने में कोई समस्या नहीं है, जैसा कि यहाँ कहा गया है


5
-1 क्योंकि मैंने स्पष्ट रूप से लिखा था "मैं एक नए रंग को परिभाषित करना चाहता हूं जिसे मैं कई स्थानों पर उपयोग कर सकता हूं" प्रश्न में, क्योंकि मैं रंग मूल्य को हार्डकोड नहीं करना चाहता था, लेकिन इसे एक संसाधन के रूप में परिभाषित करता हूं जिसे मैं कई स्थानों पर उपयोग कर सकता हूं।
बजरैक फ्रायंड-हैन्सन

6
@GMsoF: ओह यह काम करता है लेकिन यह सवाल का जवाब नहीं देता है।
बज्कर फ्रायंड-हेंसन

21

The

res/values/colors.xml.

<color name="red">#ffff0000</color>
android:background="@color/red"

उदाहरण मेरे लिए काम नहीं किया, लेकिन

android:background="#(hexidecimal here without these parenthesis)"

एक विशेषता के रूप में रिश्तेदार लेआउट तत्व में मेरे लिए काम किया।


10
क्या आप संसाधन टैग के साथ कलर टैग को लपेटना भूल गए?
elimirks

19

यदि आप जल्दी से एक रंग बदलना चाहते हैं (और आपके पास हेक्स संख्या याद नहीं है) तो एंड्रॉइड में कुछ पूर्व निर्धारित रंग हैं जिन्हें आप इस तरह एक्सेस कर सकते हैं:

android:background="@android:color/black"

ऐसे 15 रंग हैं जिन्हें आप चुन सकते हैं जो चीजों को जल्दी से परखने के लिए अच्छा है, और आपको अतिरिक्त फ़ाइलों को सेट करने की आवश्यकता नहीं है।

एक मान / color.xml फ़ाइल सेट करना और ऊपर बताए गए सीधे हेक्स का उपयोग करना अभी भी काम करेगा।


4

4 संभव तरीके, आप की जरूरत है एक का उपयोग करें।

1. कोटलिन

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2. डाटा बाइंडिंग

<LinearLayout
    android:background="@{@color/white}"

या अधिक उपयोगी कथन-

<LinearLayout
    android:background="@{model.colorResId}"

3. XML

<LinearLayout
    android:background="#FFFFFF"

<LinearLayout
    android:background="@color/white"

4. जावा

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));

2

एंड्रॉइड स्टूडियो 2.1.2 (या संभवतः पहले) आपको एक रंग पहिया से लेने देगा:

एंड्रॉयड स्टूडियो में कलर व्हील

मैंने इसे अपने लेआउट में निम्न जोड़कर प्राप्त किया:

android:background="#FFFFFF"

फिर मैंने FFFFFF रंग पर क्लिक किया और दिखाई देने वाले लाइटबल्ब पर क्लिक किया।


1

Kotlin

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

या

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(vista.context, R.color.newColor))

0

सभी के ऊपर उत्तर स्थिर हैं। मैंने सोचा कि मैं एक गतिशील उत्तर प्रदान करूंगा। सिंक में जिन दो फाइलों की आवश्यकता होगी, foo.xmlवे लेआउट के सापेक्ष हैं और activity_bar.javaजो इसके अनुरूप जावा वर्ग से मेल खाती हैं R.layout.foo

में foo.xmlपूरे लेआउट के लिए एक आईडी सेट करें:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/foo" .../>

और में activity_bar.javaरंग सेट onCreate():

public class activity_bar extends AppCompatActivty {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foo);

            //Set an id to the layout
        RelativeLayout currentLayout = 
                    (RelativeLayout) findViewById(R.id.foo);

        currentLayout.setBackgroundColor(Color.RED);
        ...
    }
    ...
}

आशा है कि ये आपकी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.