6

लाइनरलेआउट पर काम करने वाले ऑनक्लिक श्रोता को प्राप्त करने का प्रयास नहीं किया जाता है, लेकिन इसे कभी भी नहीं कहा जाता है :(। क्लिक करने योग्य और फोकस्यूबल (दोनों मोड) सक्षम हैं और अभी भी क्लिक श्रोता को जवाब देने के लिए सक्षम नहीं है। प्लेटफार्म विवरण: एंड्रॉइड 3.0 ..LinearLayout के क्लिक श्रोता को कभी भी

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/menu_items_button" 
       android:layout_width="0dip" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:orientation="vertical" 
       android:gravity="center_horizontal" 
       android:paddingTop="@dimen/gen_margin_xsmall" 
       android:paddingBottom="@dimen/gen_margin_xsmall" 
       android:background="@drawable/rule_bg_menu_button" 
       android:clickable="true" 
       android:focusableInTouchMode="true" 
      > 
       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/menu_items" 
        android:tag="image" 
       /> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:tag="text" 
        android:text="@string/menu_items_icon_txt" 
        style="@style/textDisplay.mediumLarge" 
       /> 

      </LinearLayout> 

नीचे और कोड में कोई मदद ?? कोड घटना श्रोता जोड़ने के लिए

_itemsButton = (LinearLayout) menu.findViewById(R.id.menu_items_button); 
final Intent itemsIntent = new Intent(this, ItemsActivity.class); 
_itemsButton.setOnClickListener(
      new View.OnClickListener() {  
       @Override 
       public void onClick(View v) { 
        startActivity(itemsIntent); //Never called! 
       } 
      } 
     ); 

कारण मैं बजाय यह कर रहा हूँ और नहीं एक छवि बटन का उपयोग है, क्योंकि की पृष्ठभूमि "बटन" राज्य आधारित (ढाल परिवर्तन) है लेकिन छवि भी है और क्लिक/फोकस पर दोनों को गठबंधन करने के लिए, मैंने एक लाइनरलेआउट का उपयोग किया जिसमें एक छवि दृश्य स्वयं ही है .. क्लिकलिस्टर लाइनरलाइट पर क्यों काम नहीं कर रहा है इस पर कोई सुझाव?

THX

+0

क्या आप लेआउट पर क्लिक करते समय राज्य परिवर्तन देखते हैं? – bigstones

+0

हाँ राज्य बदल गया है, पृष्ठभूमि रंग बदल गया है जिसे राज्य में खींचने योग्य – Rickster

+0

@pzulw सही है, छविदृश्य (लाइनरलेआउट के अंदर) क्लिक प्राप्त हो रहा है .. शायद मुझे इसे "अन-क्लिक करने योग्य" या प्रचार करना चाहिए किसी भी तरह अपने माता-पिता पर क्लिक करें .. – Rickster

उत्तर

5

क्लिक LinearLayout के बजाय imageView करने के लिए गए थे? पैड क्षेत्र (यदि कोई हो) पर क्लिक करने का प्रयास करें या ImageView1 पर क्लिक श्रोता को डालने का प्रयास करें।

+1

बीमार !! तुम चट्टान .. हाँ यह किया, मैं इसे अपने माता-पिता (लाइनरलेआउट?) पर शीर्ष पर कैसे लगा सकता हूं – Rickster

+1

छवि दृश्य और टेक्स्ट व्यू पर एक ही क्लिक श्रोता सेट करना आसान तरीका है। व्यू.ऑनक्लिक लिस्टनर गतिविधि लांचर = नया व्यू। ऑनक्लिक लिस्टनर() {...} layout.setOnClickListener (गतिविधि लॉन्चर); imageView.setOnClickListener (गतिविधि लांचर); textView.imageView.setOnClickListener (गतिविधि लांचर); – pzulw

+4

मुझे पता है कि यह देर हो चुकी है, लेकिन आप ImageView को एक्सएमएल में क्लिक करने योग्य नहीं भी सेट कर सकते हैं: 'android: clickable =" false "' – Sector95

-3

आपके LinearLayout की चौड़ाई "0dip" पर सेट है, आपको स्क्रीन पर कुछ भी नहीं देखना चाहिए।

यदि चौड़ाई बदल जाती है "FULL_PARENT", जो काम करता है। कृपया अपना कोड फिर से सावधानी से जांचें।

+3

मुझे बटन ठीक लगता है। चौड़ाई 0 डुबकी है क्योंकि इसमें वजन होता है जो चौड़ाई को संभालता है। – Rickster

+0

फिर लाइनरलायआउट को पूरी स्क्रीन भरने का प्रयास करें, आपको पता चलेगा कि लेआउट वास्तव में क्लिक ईवेंट प्राप्त करता है। मैंने आपके कोड की कोशिश की है, यह काम करता है :) – shihpeng

+1

दो नोट्स: 0 डीपी (या 0 डीआईपी) लेआउट_वेट के साथ उपयोग किए जाने पर उपयुक्त लेआउट_विड्थ है।दूसरा, यह "fill_parent" होगा, न कि "full_parent", और नए एंड्रॉइड संस्करणों में आप इसके बजाय "match_parent" का उपयोग कर सकते हैं – LocalPCGuy

3

(ताकि मैं पूर्व टैग का उपयोग कर सकते हैं एक नया जवाब के रूप में मेरी प्रतिक्रिया जोड़ने।)

आसान तरीका छवि दृश्य और पाठ दृश्य पर एक ही क्लिक श्रोता स्थापित करने के लिए है।

View.OnClickListener activityLauncher = new View.OnClickListener() {... } 
layout.setOnClickListener(activityLauncher); 
imageView.setOnClickListener(activityLauncher); 
textView.imageView.setOnClickListener(activityLauncher);