2010-06-24 13 views
7
<EditText android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_weight="1" 
    android:id="@+id/name" android:singleLine="true" 
    android:maxLength="12" android:capitalize="none" android:inputType="text" /> 
<Button android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/search_button" 
    android:text="Search" /> 

मेरे पास यह मेरे आवेदन के शीर्ष पर है। जब एप्लिकेशन शुरू होता है, तो संपादन टेक्स्ट नारंगी हाइलाइट किया जाता है और इसमें कर्सर होता है; जब एडिटटेक्स्ट टैप किया जाता है, तो सॉफ्ट कीबोर्ड पॉप अप होता है। उपयोगकर्ता इसे संपादन टेक्स्ट में टाइप करने के लिए उपयोग करता है।एंड्रॉइड: एडिटटेक्स्ट और बटन; बटन पर क्लिक करते समय, EditText को फोकस करें और सॉफ्ट कीबोर्ड छुपाएं?

हालांकि, जब वे बटन पर क्लिक करते हैं, तो मेरी ऑनक्लिक विधि आग लगती है और यह सबकुछ करता है, हालांकि सॉफ्ट कीबोर्ड कीबोर्ड पर रहता है और एडिटटेक्स्ट अभी भी अपने कर्सर के साथ हाइलाइट किया जाता है।

मैं भी बटन onclick के शीर्ष पर, है:

findViewById(R.id.name).clearFocus(); 

इस के बावजूद, EditText अपना ध्यान केंद्रित स्पष्ट करने के लिए प्रतीत नहीं होता। मैं बटन को वास्तव में कैसे कार्य कर सकता हूं जैसे कि यह फ़ॉर्म सबमिट कर रहा है?

इसके अलावा, मैं बटन के क्लिक पर एक अलग गतिविधि में संक्रमण नहीं करता हूं। मुझे लगता है कि यह सामान्य मामला है, और शायद यही वजह है कि वे कीबोर्ड को छिपाने से परेशान नहीं हैं। हालांकि मैं स्क्रीन के शीर्ष पर खोज बॉक्स और बटन रखना चाहता हूं, इसलिए जब बटन दबाया जाता है तो मैं गतिशील रूप से स्क्रीन भरता हूं और स्क्रीन जोड़ता हूं।

मैं अपना वांछित व्यवहार कैसे प्राप्त कर सकता हूं?

उत्तर

13

आप इसे कॉल करके कीबोर्ड को छुपा सकते हैं।

InputMethodManager imm = (InputMethodManager) getSystemService(
    INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getWindowToken(), 0); 
+0

हाँ, लेकिन क्या यह वास्तव में इस बारे में जाने का सबसे अच्छा तरीका है? – Ricket

+0

अच्छा, यह काम किया ... तो मुझे लगता है कि यह ठीक है ... फिर भी एक हैक की तरह लगता है ... – Ricket

+1

यह एक हैक नहीं है, यह एंड्रॉइड स्रोत पर यह सब कुछ किया गया है। मुझे लगता है कि यह आईएमई को बंद करने के लिए उपयोगकर्ता को दबाए जाने का इरादा है, लेकिन अगर वे इसे मैन्युअल रूप से बंद नहीं करना चाहते हैं, तो एंड्रॉइड से पहले इसे बंद करने से पहले आपको आईएमई बंद करना होगा। –

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