2010-02-23 13 views
18

मेरे पास एक सूची दृश्य है, जहां प्रत्येक पंक्ति में पंक्ति लेआउट में एक बटन होता है। हालांकि, ऐसा लगता है कि पंक्ति स्वयं को अनजान बनाती है। मैं बटन और पंक्ति दोनों को क्लिक करने योग्य कैसे बना सकता हूं?एंड्रॉइड पंक्ति बटन के साथ अनजान हो जाता है

धन्यवाद।

उत्तर

25

आप इस तरह की सूची पर itemsCanFocus निर्धारित करने की आवश्यकता:

mList.setItemsCanFocus(true); 

बटन क्लिक करने योग्य बनाने के लिए। फिर आपको अपने एडाप्टर का उपयोग करने की आवश्यकता होगी और getView में एक दृश्य लौटाएगा जो क्लिक करने योग्य और फोकस करने योग्य है। आप डिफ़ॉल्ट हाइलाइट स्टेटस भी खो देंगे ताकि आपको पृष्ठभूमि संसाधन के साथ उन्हें वापस रखना होगा। तो ऐसा करें:

view.setClickable(true); 
    view.setFocusable(true); 
    view.setBackgroundResource(android.R.drawable.menuitem_background); 

अपना विचार वापस करने से पहले आपके विचार में।

+3

बहुत बहुत धन्यवाद। इसके अलावा मुझे देखने के लिए ऑनक्लिक लिस्टनर जोड़ना पड़ा। – ggarber

+1

कोई विचार है कि डिफ़ॉल्ट रूप से सूचियों में उपयोग किए जाने वाले होलो थीम के हाइलाइट स्टेटस कैसे प्राप्त करें? 'menuitem_background' नारंगी है लेकिन डिफ़ॉल्ट स्थिति नीली होनी चाहिए। – rndstr

+6

यह काम नहीं करता है। AdapterView.OnItemClickListener कभी नहीं कहा जाता है। – Chloe

0

दुर्भाग्य से मुझे नहीं लगता कि यह संभव है। आप ListView पंक्ति में या तो फोकस करने योग्य विजेट हो सकते हैं, जैसे बटन, या दोनों क्लिक नहीं हो सकते हैं। देखें link.

+2

लेकिन Google ऐसा करता है। – KickingLettuce

2

अपने विजेट को पर क्लिक करने की कोशिश करें, गैर क्लिक करने योग्य और गैर फोकस करने योग्य xml में, आइटम पर क्लिक सामान्य रूप से काम करेगा और बटन पर क्लिक सामान्य रूप से काम करेगा।

android:clickable="false" 
android:focusable="false" 

उम्मीद है कि इससे मदद मिलती है।

9

जब भी मैं android:focusable और android:clickable विशेषताओं से संबंधित पोस्ट देखता हूं, तो मैं हमेशा उन्हें एक ही मूल्य पर एक ही मूल्य पर सेट करता हूं। मैंने सोचा कि अगर वे एक होने के बजाय दो अलग-अलग गुण हैं तो एक कारण होना चाहिए।

यह पता चला अपने वांछित व्यवहार को प्राप्त करने का एक बेहतर तरीका है अपने View में

android:focusable="false" 

या

yourButton.setFocusable(false) 
Button पर

स्थापित करने के लिए है। एक बार ऐसा करने के बाद, आप Button पर OnClickListener सेट करने में सक्षम होंगे, और पंक्ति पर एक क्लिक विधि को आपके OnItemClickListener में आग लगा देगा।

+1

यह मेरे लिए चुने गए उत्तर से बेहतर काम करता है। –

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