2015-08-04 5 views
9

आम तौर पर यह focusable, focusableInTouch + clickable को गलत पर सेट करने के लिए पर्याप्त है। लेकिन यहां यह काम नहीं करता है।इससे बचें कि एडिटटेक्स्ट उपभोग करता है क्लिक करें

मैं EditText पर होने वाले क्लिक का उपभोग करने के रूप में अच्छी तरह माता-पिता LinearLayout चाहते हैं, लेकिन यह काम नहीं करता ...

<LinearLayout 
    android:id="@+id/llText" 
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:background="?attr/selectableItemBackground" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/tvText" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:paddingRight="5dp" 
     android:text="@null" /> 

    <EditText 
     android:id="@+id/etText" 
     android:inputType="none" 
     android:gravity="center_horizontal" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:layout_width="wrap_content" 
     android:ems="4" 
     android:layout_gravity="center_vertical" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

मैं editable=false और inputType=none कोशिश की, लेकिन यह काम नहीं करता। क्यों नहीं? EditText क्लिक का उपभोग करता है और इसे अपने माता-पिता को नहीं सौंपता है।

संपादित

मैं एक onClickListenerLinearLayout को सेट कर रहा हूं और यह काम नहीं करता है, तो मैं सीधे EditText प्रेस ...

+0

आप की कोशिश की 'एंड्रॉयड है: क्लिक करने योग्य = "सच" 'आपके रैखिक लेआउट पर? –

+0

हां, मैं इसे 'ऑनक्लिक लिस्टनर' पर सेट कर रहा हूं ... यह तब तक काम करता है जब तक मैं 'एडिटटेक्स्ट' नहीं दबाता ... – prom85

उत्तर

0

आप का उपयोग करना चाहिए ViewGroup.onInterceptTouchEvent (MotionEvent)

यह विधि सभी टच स्क्रीन गति घटनाओं को रोकना है

+0

मैं 'टेक्स्ट व्यू' का उपयोग करना पसंद करता हूं और इसे 'एडिटटेक्स्ट' की तरह स्टाइल करता हूं यह ... फिर भी, मुझे दिलचस्पी है कि उपर्युक्त समाधान हर जगह क्यों काम करता है लेकिन 'एडिटटेक्स्ट' के साथ ... – prom85

24

देर हो चुकी है, लेकिन शायद किसी और को इस जानकारी की आवश्यकता है। गलत पर फ़ोकस करने योग्य, focusableInTouch + क्लिक करने योग्य स्थापना के बाद, अपने जावा कोड में इस जोड़ें:

editText.setMovementMethod(null); 
    editText.setKeyListener(null); 

बाद में उन्हें बहाल करने के लिए उन मूल्यों को बचाने के लिए मत भूलना:

mMovementMethod = mEditText.getMovementMethod(); 
    mKeyListener = mEditText.getKeyListener(); 
+2

श्रोताओं को बहाल करने के बाद संपादन मेरे लिए काम नहीं करेगा जब तक कि मैं 'फोकस करने योग्य इंटचोड मोड' को सही – shoe

+0

पर सही आदमी सेट नहीं करता! धन्यवाद ! – anthony

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