2014-07-25 14 views
23

शायद इस सवाल से पहले पूछा गया है, लेकिन मुझे एक सटीक उत्तर नहीं मिला। मैंने अपने एल टेस्ट एप्लिकेशन में एक सूची के रूप में RecyclerView विजेट को कार्यान्वित किया है और जब आप किसी आइटम फॉर्म सूची पर क्लिक करते हैं तो मैं 'भौतिक प्रभाव' प्राप्त करना चाहता हूं। मैं अपने ViewHolder निर्माण में एक onClickListener लागू किया और विशेषतारीसाइक्लर देखें ITem पर प्रभाव क्लिक करें एल

android:background="?android:attr/selectableItemBackground"

मेरी सूची आइटम लेआउट के लिए एक पृष्ठभूमि (माता-पिता के लिए) के रूप में निर्धारित किया है।

लेकिन इनमें से कोई भी काम नहीं किया। जब मैं आइटम पर क्लिक करता हूं कुछ भी नहीं होता है '। कोई प्रभाव नहीं होता, होलो, सामग्री, कोई भी ... कृपया का कहना है कि अगर मैं गलत यहाँ कुछ कर रहा हूँ ... Thx

उत्तर

37

मैं एक मूर्खतापूर्ण गलती की है और मेरी सूची में

android:clickable="true" 
android:focusable="true" 

डाल नहीं था आइटम लेआउट। मुझे लगता है कि इसे पूर्व एल की आवश्यकता नहीं थी, लेकिन इससे कोई फर्क नहीं पड़ता क्योंकि इस मामले में यह समस्या थी।

+0

क्या आप जानते हैं कि आइटम में नीचे सीमा कैसे जोड़ें? मैंने पाया सभी विधियों रूट लेआउट की पृष्ठभूमि का उपयोग कर रहे हैं, लेकिन मैं इसका उपयोग नहीं कर सकता क्योंकि यह पहले से ही ऑनक्लिक प्रभाव के लिए सेट है। – Link14

+1

@ लिंक 14 आप आइटम सजावट को कार्यान्वित कर सकते हैं (आप रीसाइक्लिंग व्यू ऑब्जेक्ट में addItemDecoration() को कॉल कर सकते हैं)। वांछित सजावट (सीमा, या sth अन्य) को लागू करने के लिए आपको उस वर्ग को जोड़ने की आवश्यकता है जो आपके प्रोजेक्ट में रीसाइक्लर व्यू.इटम डेकोरेशन बढ़ाती है और इसे आपकी आवश्यकताओं में संशोधित करती है। आप इस वर्ग का उपयोग addItemDecoration() में एक तर्क के रूप में करेंगे। इस धागे में इस बारे में और अधिक स्पष्टीकरण है http://stackoverflow.com/questions/24618829/how-to-add-dividers-and-spaces-between-items-in-recyclerview। RecyclerView.ItemDecoration क्लास यहां उपलब्ध है https://gist.github.com/alexfu/0f464fc3742f134ccd1e – Sandra

+0

यह किसी कारण से मेरे लिए काम नहीं करता है ... – Micro

41

सैंड्रा का जवाब मेरे लिए काम नहीं करता था।

android:clickable="true" 
android:focusable="true" 
android:background="?android:attr/selectableItemBackground" 

नोट:: यदि आप एक त्रुटि जब अंतिम पंक्ति में चिपकाने मिलता है, तो अपने android ऐप संस्करण 10 या नीचे पर सेट किया गया है मैं अपने सूची आइटम लेआउट में एक और संपत्ति की जरूरत है। एंड्रॉइड स्टूडियो में बस त्रुटि पर राइट क्लिक करें और इसे सेट करें ताकि यह आपके लेआउट का वी 11 संस्करण भी बना सके। फिर, मूल लेआउट में,

android:background="?android:attr/selectableItemBackground"` 

यह सुनिश्चित करना है कि एनीमेशन एंड्रॉइड या उससे कम के v10 संस्करणों में समर्थित नहीं है। इन दो लेआउट फ़ाइलों को स्थापित करने के साथ, एनीमेशन एंड्रॉइड के v11 + संस्करणों में सही ढंग से दिखाएगा और निश्चित रूप से यह निम्न संस्करणों में नहीं दिखाया जाएगा।

(या बस से अधिक 10 के लिए अपने app की minSdkVersion संस्करण में वृद्धि)

+2

मैंने एंड्रॉइड नहीं रखा: पृष्ठभूमि = "? एंड्रॉइड: attr/selectableItemBackground" मेरे प्रश्न के उत्तर में, क्योंकि मैंने अपने प्रश्न में स्वयं को समझाया है, कि मेरे पास पहले से ही है कोड में लागू किया गया ..भ्रम के लिए खेद है – Sandra

+2

सेट फोकस करने योग्य (सत्य) यहां अनावश्यक है और वास्तव में जब तक आइटम 'केंद्रित आइटम' के संत में हो सकता है और ग्रे पृष्ठभूमि प्राप्त हो जाता है। लहर प्रभाव इस विशेषता सेट के बिना भी काम करेगा –

4
android:clickable="true" 
android:focusable="true" 

इन पंक्तियों अब नहीं किया जाता। बस

android:background="?android:attr/selectableItemBackground" 

क्लिक प्रभाव के लिए काम कर रहा है।

+0

यह शायद अब मामला है। लेकिन उस समय इस सवाल से पूछा गया कि मैं एल पूर्वावलोकन के साथ प्रयास कर रहा था और क्लिक प्रभाव चला गया था :) – Sandra

+0

मैं समझता हूं। मैंने अपना जवाब "अब नहीं" के साथ संपादित किया है =) –

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