2015-09-27 2 views
5

मैं एक सूची दृश्य पंक्ति में पृष्ठभूमि के रूप में RippleDrawable सेट करने का प्रयास कर रहा हूं। view.setBackgroundResource(R.drawable.ripple) का उपयोग करते समय सबकुछ ठीक काम करता है। जबसेटबैकग्राउंड रिसोर्स सेटबैकग्राउंड से अलग करता है RippleDrawable

view.setBackground(view.getContext().getDrawable(R.drawable.ripple)) 

यह काम करता है की कोशिश कर रहा है, लेकिन तरंग प्रदर्शित नहीं करता है जल्दी से आइटम को स्पर्श जब यह केवल प्रकट होता है जब मैं दृश्य दबाया रखना (मैं भी आइटम के लिए एक सक्रिय/जाँच राज्य है),।

देखें कक्षा में setBackgroundResource विधि इस प्रकार है:

if (resid != 0 && resid == mBackgroundResource) { 
    return; 
} 

Drawable d = null; 
if (resid != 0) { 
    d = mContext.getDrawable(resid); 
} 
setBackground(d); 

mBackgroundResource = resid; 

तो मूल रूप से सटीक बात मैं मैन्युअल रूप से करना करने की कोशिश कर रहा हूँ।

नोट: मैं सेटबैकग्राउंड विधि का उपयोग करना चाहता हूं क्योंकि मैं प्रोग्रामिंग रूप से रिपल ड्राउबल बनाना चाहता हूं।

क्या किसी को पता है कि यह क्यों हो रहा है?

उत्तर

1

इसके बजाय पंक्ति View पर तरंग की स्थापना की, listSelector विशेषता का उपयोग ListView पर सेट:

<ListView 
    ... 
    android:listSelector="@drawable/ripple" /> 

प्रोग्राम आप mListView.setSelector(...) साथ सेट कर सकते हैं।

+0

बाहर रखी मैं करने की जरूरत करने के लिए कहा जाता है सूची पंक्ति के लिए 'सक्रिय' स्थिति है और जिस तरीके से मैं इसे प्राप्त करने में कामयाब रहा हूं, वह सीधे दृश्य की पृष्ठभूमि का उपयोग करके और 'सूची चयनकर्ता' नहीं था। लहर इस दृष्टिकोण का उपयोग करके ठीक काम करती है, केवल इतना है कि मुझे 'सक्रिय' स्थिति को सही तरीके से रखने का तरीका ढूंढने का प्रयास करना है। यह अभी भी मेरे लिए अजीब लगता है क्यों 'सेटबैकग्राउंड रिसोर्स' का उपयोग करके यह ठीक काम करता है लेकिन 'सेटबैकग्राउंड ड्राउबल' के साथ नहीं है। क्या आपको इसके बारे में कोई जानकारी है? – GeorgeP

1

कॉल View.requestLayout();

CompoundButton समारोह setChecked(boolean) जब इस्तेमाल किया के साथ View.invalidate(); को अमान्य कर View इसलिए View खुद की फिर से जांच और उसके बाद फिर से तैयार या

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

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