व्यू का बैकग्राउंड कलर कैसे सेट करें


179

मैं एक दृश्य (इस मामले में एक बटन) की पृष्ठभूमि रंग सेट करने के लिए कोशिश कर रहा हूँ।

मैं इस कोड का उपयोग करता हूं:

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

इससे बटन स्क्रीन से गायब हो जाता है। मैं क्या गलत कर रहा हूं, और किसी भी दृश्य पर पृष्ठभूमि का रंग बदलने का सही तरीका क्या है?

धन्यवाद।


1
जो सही लगता है। वास्तव में, मुझे नहीं लगता कि आपको अमान्य () कॉल करने की आवश्यकता है। जब आप कहते हैं कि बटन गायब हो जाता है, तो क्या आपका मतलब है कि शाब्दिक अर्थ है या बटन का पाठ या उस पर एक छवि है जो गायब हो गया है?
रिकनॉटफ्रेड 6

जवाबों:


281

आपने अपने बटन को पारदर्शी बनाया। पहला बाइट अल्फा है।

प्रयत्न v.setBackgroundColor(0xFF00FF00);


2
नीचे EddieB का जवाब ज्यादा बेहतर रूप में यह किसी भी सीमाओं आदि को हटा इस तरह के एक EditText के रेखांकन के रूप में है
पिघला हुआ आइस

@ रंग बेहतर है रंग ।ग्रीन? अगर मैं argb के साथ रंग संकलन चाहता हूं? ... आपका जवाब है
delive

2
@ डेलीव - फिर से आओ? Color.GREEN को पदावनत नहीं किया जाता है, और इसमें अल्फा बाइट शामिल है। यह मूल्य है 0xff00ff00, ठीक उसी तरह जैसा कि उत्तर में सुझाया गया है, सिवाय इसके कि मानव-पठनीय होने का लाभ भी है । अधिकांश डेवलपर्स मानव-पठनीय समाधान पसंद करेंगे।
एरोथ

145

जब आप setBackgoundColor को कॉल करते हैं, तो यह किसी भी बॉर्डर, कॉर्नर, पैडिंग आदि सहित किसी भी मौजूदा बैकग्राउंड रिसोर्स को ओवरराइट / हटा देता है, आप जो करना चाहते हैं, वह मौजूदा बैकग्राउंड रिसोर्स का रंग बदल देता है ...

View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);

अलग-अलग प्रभावों के लिए पोर्टरडफ.मोड। * के साथ प्रयोग करें।


"किसी भी मौजूदा पृष्ठभूमि संसाधन को अधिलेखित / हटा देता है," वास्तव में नहीं।
येसु अलेयौब

2
मुझे v.invalidate () के साथ उपरोक्त का उपयोग करना था; अगली लाइन पर
हाशिम अख्तर

1
इस समय को बर्बाद करने की कोशिश की और स्वीकृत जवाब के साथ चले गए, v.getBackground () ने नलपॉइंट को अपवाद दिया और दुर्घटनाग्रस्त हो गया।
सिद्दार्थ जी

यह प्लस पोर्टरडफ.मोड.एसआरसी_इन ने मेरे लिए हल किया ताकि मैं अपनी पृष्ठभूमि सीमा को न खो दूं।
गुइलहर्मे कार्वाल्हो

123

ऐसा करने के लिए कई विकल्प ...

हरे रंग की पृष्ठभूमि सेट करें:

v.setBackgroundColor(0x00FF00);

अल्फा के साथ हरे रंग की पृष्ठभूमि सेट करें :

v.setBackgroundColor(0xFF00FF00);

रंग के साथ हरे रंग की पृष्ठभूमि सेट करें। स्थिर स्थिर:

v.setBackgroundColor(Color.GREEN);

Colors.xml में हरे रंग की परिभाषा के लिए पृष्ठभूमि सेट करें

<?xml version="1.0" encoding="utf-8"?>
<resources>     
    <color name="myGreen">#00FF00</color> 
    <color name="myGreenWithAlpha">#FF00FF00</color> 
</resources>

और उपयोग:

v.setBackgroundResource(R.color.myGreen);

तथा:

v.setBackgroundResource(R.color.myGreenWithAlpha);

या लंबे समय तक घुमावदार:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));

तथा:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));

getResources().getColor(...)पदावनत मिला stackoverflow.com/questions/31842983/...
जूनियर Mayhé

5
वहाँ भी है: v.setBackgroundResource(R.color.myGreen);का उपयोग करते समयcolors.xml
गंभीर

invalidateकॉल को हटा दिया गया है, जैसा कि आप पहले से ही कॉल करने के तरीकों को देख सकते हैंsetBackground...
पश्चिम

v.setBackgroundColor(0x00FF00);बस उनका कोड है जो वे कहते हैं कि काम नहीं कर रहा है। मैं यह भी पारदर्शी होने की उम्मीद करूंगा।
पश्चिमोत्तर

35

आप हेक्स-रंग को किसी भी संसाधन के साथ सेट कर सकते हैं:

View.setBackgroundColor(Color.parseColor("#e7eecc"));

16
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

कोड हरे रंग में सेट नहीं होता है। इसके बजाय, यह बटन को पूरी तरह से अदृश्य बनाता है।

स्पष्टीकरण: रंग का हेक्स मान गलत है। शून्य के अल्फा मान के साथ, रंग अदृश्य होगा।

सही 0xFF00FF00अस्पष्टता पूर्ण अस्पष्टता हरे रंग के लिए है। 00 और FF के बीच कोई अल्फा मान पारदर्शिता का कारण होगा।


12

और किसी भी दृश्य पर पृष्ठभूमि का रंग बदलने का सही तरीका क्या है?

किसी पर भीView ? आपके पास जो सही है, हालांकि आपको invalidate()कॉल ड्रॉप करना चाहिए ।

हालांकि, कुछ के Viewsपास पहले से ही पृष्ठभूमि है। ए Button, उदाहरण के लिए, पहले से ही एक पृष्ठभूमि है: बटन का चेहरा ही। यह पृष्ठभूमि एक है StateListDrawable, जिसे आप android-2.1/data/res/drawable/btn_default.xmlअपने एंड्रॉइड एसडीके इंस्टॉलेशन में पा सकते हैं । बदले में, कई घनत्वों में उपलब्ध नौ-पैच बिटमैप छवियों के एक समूह को संदर्भित करता है। आपको अपने हरित लक्ष्यों को पूरा करने के लिए क्लोन और सभी को संशोधित करने की आवश्यकता होगी।

संक्षेप में, आप बेहतर पृष्ठभूमि की जगह बदलने का प्रयास करने के बजाय एक और यूआई पैटर्न पा सकते हैं Button


ठीक है, बटन पृष्ठभूमि के बारे में स्पष्टीकरण के लिए धन्यवाद। मेरे लिए नौ पैच बिटमैप ( डेवलपर. android.com/reference/android/graphics/NinePatch.html ) नए थे। जब मैं बटन दबाता हूं तो मैं स्क्रीन पर किसी भी चीज का रंग बदलना चाहता हूं। बटन एक TextView पर हैं। उस के रंग को बदलने की कोशिश करते हुए, कंसोल संदेश की ओर जाता है "DDM डिस्पैच रेग वेट टाइमआउट ... गतिविधि प्रबंधक: DDM को रद्दी नहीं कर सकता 52454151: कोई हैंडलर परिभाषित नहीं किया गया" और स्क्रीन पर एक संवाद "ऐप अप्रत्याशित रूप से बंद हो गया"। लगता है कि मुझे UI पर अधिक पढ़ने की आवश्यकता है। किसी भी संकेत का स्वागत करते हैं। धन्यवाद।
पीटर vdL

12

स्क्रीन पर देखे जाने वाले पहले रंग को सेट करने के लिए, आप इसे संबंधित लेआउट में भी कर सकते हैं। xml (बेहतर डिज़ाइन) इस संपत्ति को संबंधित दृश्य में जोड़कर:

android:background="#FF00FF00"

प्रश्न स्पष्ट करता है कि रंग परिवर्तन को गतिशील होना चाहिए।
पीटर vdL


6

मैं एपीआई मिनट 16, लक्ष्य 23 का उपयोग करता हूं

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

आमतौर पर बहुत सारे डिफ़ॉल्ट रंग नहीं होते हैं। डेवलपर
/android.com/samples/BasicMediaRouter/res/values/… के



4

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




2

में kotlin आप इसे इस तरह कर सकता है:

val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))

getColorCompat()एक विस्तार समारोह कहां है:

/**
 * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
 */

 fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)

1
view.setBackgroundColor(R.color.primaryColor);

रंग को पिछले रंग मान में जोड़ता है, इसलिए मेरा एक अलग रंग है।

मेरे लिए क्या काम करता है:

view.setBackgroundResource(R.color.primaryColor);

1

मान लें कि हमारे पास एक प्राथमिक रंग है values=>colors.xml:

<resources>
    <color name="primary">#FDD835</color>
</resources>

इसलिए यदि हम अपने कस्टम रंग का उपयोग करना चाहते हैं setBackgroundColor(@ColorInt int Color)तो हमें बस @SuppressLint("ResourceAsColor")निर्माणकर्ता / विधि के साथ एक एनोटेशन की आवश्यकता होती है जिसे निम्नानुसार उपयोग किया जाएगा:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }

0

आपको intतर्क में पास होना चाहिए ।

पहला उदाहरण:

view.setBackgroundColor(-500136)

दूसरा उदाहरण:

int colorId = R.color.green;

view.setBackgroundResource(colorId);


0

मैंने उपरोक्त सभी तरीकों की कोशिश की। लेकिन मुझे वह हासिल करना चाहिए जो मुझे चाहिए। यहाँ मेरी कोशिश है। यदि आप रंग के लिए हेक्सकोड का उपयोग कर रहे हैं और रंग को छवि की पृष्ठभूमि के रूप में सेट करना चाहते हैं, तो यह कोटलिन कोड है।

val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val colorCode = "#ffffff"
canvas.drawColor(Color.parseColor(colorCode))
mImageViewLogo.setImageBitmap(bitmap)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.