2010-05-09 23 views
8

मैं Droid Incredible पर विकसित कर रहा हूं (और 1.5 एवीडी एमुलेटर पर भी परीक्षण किया है), और मेरे टैब विजेट में से एक टैब में एक सूचीदृश्य और एक संपादन टेक्स्ट के साथ एक पंक्ति होती है और एक बटन भेजें (चैट सुविधा के लिए)। एक बार जब मैं भेजें क्लिक करता हूं तो मैं सॉफ्ट कीबोर्ड को बंद करने के लिए निम्न का उपयोग कर रहा हूं, लेकिन यह काम नहीं कर रहा है। यह कोड के समान है जिसे मैंने कहीं और पाया है कि लोगों ने सही के रूप में उभरा है।सॉफ़्ट कीबोर्ड को छिपाएं

मुझे कुछ भी याद आ रही है?

// in Button's onClick(): 
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry); 
// Handle button click ... 
chatTextBox.setText(""); 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 

मैंने ध्वज को 0 पर बदलने की भी कोशिश की। कोई भाग्य नहीं। किसी को पता है कि क्या हो रहा है ??

**** संपादित करें **** बस एहसास हुआ कि मैं मूल रूप से hideSoftInputFromWindow() के बजाय hideSoftInputFromInputMethod() का उपयोग कर रहा था। इसे बदलने से यह काम नहीं करता है ...

उत्तर

20

HIDE_IMPLICIT_ONLY से 0 को बदलकर यह किया गया (जब मैं hideSoftInputFromInputMethod() से बदल गया)।

हालांकि मुझे यकीन नहीं है कि क्यों HIDE_IMPLICIT_ONLY काम नहीं कर रहा है क्योंकि मैं मेनू पर लंबे समय तक प्रेस के साथ कीबोर्ड को स्पष्ट रूप से खोल नहीं रहा हूं।

+0

आप ध्वज के साथ 'कुंजीपटल दिखाई देगी SHOW_FORCED'then यह बताता है कि उपयोगकर्ता (जैसे देर तक दबाए मेनू के आधार पर) इनपुट पद्धति खुली मजबूर कर दिया है तो उसे बंद नहीं किया जाना चाहिए जब तक वे स्पष्ट रूप से ऐसा करते हैं। [दस्तावेज़ीकरण देखें] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#SHOW_FORCED) –

+0

यदि आपके पास ** जबरन ** दिखाया गया कीबोर्ड है और छिपाना चाहते हैं तो निम्नलिखित कोड 'इनपुट मोड मैनेजर' का उपयोग करें imm = (इनपुट मोड मैनेजर) mContext.getSystemService (Context.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow (mEditText.getWindowToken(), 0); ' –

11

फ़ाइल

एंड्रॉयड AndroidManifest.xml में गतिविधि से रोकने के लिए एक अन्य विकल्प: windowSoftInputMode = "stateAlwaysHidden" - जब गतिविधि भरी हुई है इस विधि/लोड हो रहा है पाएगा कुंजीपटल दिखा। लेकिन जब आप संपादन योग्य घटक पर क्लिक करते हैं जैसे edittext कीबोर्ड खुल जाएगा। मेरी आवश्यकता के लिए बिल्कुल सही है।

<activity 
      android:name=".Name" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
+0

यह तब काम कर रहा है जब कीबोर्ड कभी भी मर नहीं रहा है। अच्छा था। – beginners

5

1.First कीबोर्ड के साथ अपने पाठ संपादित टोकन बाँध और खुले
यानी inputMethodManager.showSoftInput(_edittext, 0); // यहाँ _edittext देखने का उदाहरण

2.keyboard स्वचालित रूप से अगर संपादित पाठ छिपा हो जाएगा है स्क्रीन से छिपा हुआ

3. एडिट टेक्स्ट अभी भी स्क्रीन पर है लेकिन आप कीबोर्ड को छिपाना चाहते हैं तो नीचे कोड imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); // टी का उपयोग करें यदि संपादन स्क्रीन पर नहीं है या केंद्रित नहीं है तो उसकी इच्छा काम नहीं करेगी।

+1

यह अब तक का सबसे अच्छा जवाब है !!! सभी कीबोर्ड छिपाने के पीछे रहस्य समझाया – ulusoyca