2011-05-07 7 views
15

मेरे पास एक फॉर्म है। वर्टिकल लेआउट में 7 EditText। एक पल में स्क्रीन पर केवल 3 एडिटटेक्स्ट देख सकते हैं (फॉर्म बड़ा है इसलिए मुझे सभी फाइलों को भरने के लिए ऊपर और नीचे स्क्रॉल करने की आवश्यकता है)। नीचे - बटन।एंड्रॉइड बटन को कार्रवाई के लिए दो क्लिक की आवश्यकता है

जब मैं शीर्ष संपादन टेक्स्ट (या शीर्ष में से एक, जब मैं बटन पर स्क्रॉल करता हूं तो अदृश्य होता है), और जब मैं स्क्रॉल करता हूं और बटन को एक बार क्लिक करने का प्रयास करता हूं, तो कुछ भी होता है - कुछ भी नहीं होता है। जब मैं दोबारा क्लिक करता हूं - बटन बटन होता है।

जब फोकस और बटन दोनों के साथ EditText दिखाई देता है - बटन को एक क्लिक की आवश्यकता होती है।

मुझे लगता है कि पहले मामले में पहले क्लिक केवल फोकस लेता है। और दूसरा क्लिक "वास्तविक" क्लिक है।

मैं इसे कैसे ठीक कर सकता हूं? मुझे बटन पर केवल एक क्लिक की आवश्यकता है। धन्यवाद

+0

आप इसे कैसे दोहरा सकते हैं: डिफ़ॉल्ट गतिविधि के साथ क्रेते खाली परियोजना, इस लेआउट http://pastebin.ca/2054854 का उपयोग असली डिवाइस पर proj शुरू - शीर्ष पर EditText पाठ लिखने, नीचे बटन के लिए स्क्रॉल और बटन क्लिक करें। – newmindcore

उत्तर

20

प्रश्न पुराना है और मुझे नहीं पता कि इससे आपकी समस्या हल हो जाएगी, क्योंकि आपका पेस्टबिन लिंक अब और काम नहीं करता है, लेकिन चूंकि मैंने आपकी पोस्ट पर एक ही समस्या के साथ ठोकर खाई और मुझे एक समाधान मिला वैसे भी इसे पोस्ट:

मेरे मामले समस्या आई है जब मैं एक ट्यूटोरियल के बाद एक बटन के लिए एक कस्टम शैली लागू में:

<style name="ButtonStyle" parent="@android:style/Widget.Holo.Button"> 
    <item name="android:focusable">true</item> 
    <item name="android:focusableInTouchMode">true</item> 
    <item name="android:clickable">true</item> 
    <item name="android:background">@drawable/custom_button</item> 
    <item name="android:textColor">@color/somecolor</item> 
    <item name="android:gravity">center</item> 
</style> 

समस्या निम्न पंक्ति था:

<item name="android:focusableInTouchMode">true</item> 

एक बार जब मैंने इसे हटा दिया तो बटन अपेक्षित काम करता था।

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

+0

धन्यवाद! मेरे लिए इसे फिक्स्ड – locke

+0

कि "फोकस करने योग्य इंटचोड" गलती से एक प्राचीन ट्यूटोरियल में पोस्ट किया गया है, अनगिनत बग-सवार एंड्रॉइड ऐप्स में कॉपी-पेस्ट किया गया है। –

10

मैंने इसी तरह की समस्या को हल करने के लिए निम्न का उपयोग किया।

input.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        v.performClick(); 
       } 
      } 
     }); 

मैं focusableInTouchMode सच होने की जरूरत: यह स्वचालित रूप से फिर से करता है, तो पहले क्लिक ही ध्यान केंद्रित हो जाता है आइटम पर क्लिक करता है।

+0

क्या यह एक हॉटफिक्स नहीं है? स्वीकृत उत्तर आपके लिए काम नहीं करता है? – Rajkiran

+0

आपने मेरे जीवन दोस्त को बचाया :) – iBabur

+0

@Rajkiran यदि इसकी आवश्यकता है कि आपको एंड्रॉइड की आवश्यकता है: फोकस करने योग्य इंटचोडोड = "सत्य" तो यह समाधान सही है, मेरे मामले में यह ध्यान देने योग्य इन टचमोड को – iBabur

1

माव्स उत्तर के समान। यह मेरे लिए चाल है:

<Button 
    style="@android:style/Widget.EditText" 
    android:focusableInTouchMode="false" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
0

पुराना प्रश्न मुझे पता है। वैसे भी मुझे एक ही समस्या थी और फोकस करने योग्य बटन की आवश्यकता थी।
अंत में मैंने एक ऑन टचलिस्टर का उपयोग किया।

myButton.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     int action = motionEvent.getAction(); 
     if (action == MotionEvent.ACTION_DOWN) { 
      // do your stuff on down here 
     } else if (action == MotionEvent.ACTION_UP) { 
      // do your stuff on up here 
     } 

     // if you return true then the event is not bubbled e.g. if you don't want the control to get focus or other handlers.. 

     return false;     
    } 
}); 
संबंधित मुद्दे

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