2009-09-09 17 views
9

दिखा रहा है मेरे पास ListView है कि मैं कस्टम ListAdapter से पॉप्युलेट कर रहा हूं। एडाप्टर के अंदर (getView(int, View, ViewGroup) विधि में) मैं का उपयोग कर View का पृष्ठभूमि रंग सेट कर रहा हूं। समस्या यह है कि इससे कोई फर्क नहीं पड़ता कि मैंने पृष्ठभूमि को किस रंग में सेट किया है, हमेशा एक गहरा भूरा आता है। यह ध्यान देने योग्य भी हो सकता है कि मैं लाइट थीम का उपयोग कर रहा हूं।एंड्रॉइड लिस्टव्यू पृष्ठभूमि रंग हमेशा ग्रे

प्रासंगिक (सरलीकृत) कोड के टुकड़े:

AndroidManifest.xml:

<activity 
    android:name=".MyActivity" 
    android:theme="@android:style/Theme.Light" /> 

MyAdapter.java:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = LayoutInflater.from(mContext); 
    View av = inflater.inflate(R.layout.my_row, parent, false); 
    av.setBackgroundColor(R.color.myRow_red); 
    mName = (TextView) av.findViewById(R.id.myRow_name); 
    mName.setText("This is a name"); 
    return av; 
} 

कोई भी विचार/सुझाव?

उत्तर

22

आप उपयोग करना चाहिए: setBackgroundResource(R.color.myRow_red) बजाय setBackgroundColor()आपके उदाहरण में पृष्ठभूमि रंग संसाधनों में वर्णित वास्तविक रंग की बजाय आईडी के साथ असाइन किया गया है।

+0

धन्यवाद आप :) – user1940676

+0

सेवर एक जीवन मैं एक ऐसी ही स्थिति है, लेकिन मैं आकार के लिए इस समाधान का उपयोग नहीं कर सकते। मैं एक अधिक विस्तृत प्रश्न पूछा गया है यहां: http://stackoverflow.com/questions/39820240/android-canvas-drawrect-colour-always-shows-as-grey – Vedant261

6

आपको अपनी सूची के लिए वांछित पृष्ठभूमि रंग में cacheColorHint विशेषता सेट करनी होगी। ड्रॉइंग ऑप्टिमाइज़ेशन एंड्रॉइड सूचियों पर प्रदर्शन करने के लिए यह एक आवश्यक कामकाज है।

यहाँ देखें: link text

+0

यह सही है, और यदि आप अपने पृष्ठभूमि रंग गतिशील रूप से परिवर्तित करने की जरूरत नहीं है, तुम सिर्फ एंड्रॉयड जोड़ सकते हैं: अपने my_row.xml लेआउट फ़ाइल में पृष्ठभूमि = "# FF0000"। –

+0

मिडज: यह वास्तव में मेरे मामले में सच नहीं है, आप बस एक सुपर-सरलीकृत उदाहरण देख रहे हैं। –

+0

@fiXedd: तो आपकी समस्या क्या है? रंग कैश मदद निष्क्रिय नहीं किया? – Matthias

0

तुम हमेशा एक और दृश्य के अंदर पूरी पंक्ति लपेट और उस दृश्य पर पृष्ठभूमि रंग सेट कर सकें। यह दृश्य पंक्ति का पहला (और केवल) बच्चा होगा।

0

इस प्रयास करें: इस तरह करने के लिए

setBackgroundColor(0xFF5DB9FB); 
0

प्रयास करें:

av.setBackgroundColor(getResources().getColor(R.color.myRow_red));

2

मैं कहाँ विभक्त ग्रे आ रहा था एक ऐसी ही समस्या हुई थी। मैंने पाया कि अन्य समाधानों का कोई प्रभाव नहीं पड़ा, लेकिन पर मेरे ListView पर काम किया।

संबंधित मुद्दे