मेरे पास एक एप्लिकेशन है, और पर सॉफ्टकीबोर्ड को पर बड़ी संख्या में बंद करने की आवश्यकता है। उदाहरण के लिए, जब एक बटन, पर क्लिक जब एक नया लेआउट तैयार की है स्क्रीन अभिविन्यास परिवर्तन, पर, जब नियंत्रक बताता यूआई के लिए, वगैरह। मैं व्यूफ्लिपर के साथ दृश्य को फ़्लिप करने के लिएमेनू बटन को विकल्प का उपयोग करता हूं, और स्पष्ट रूप से मैं चाहता हूं कि कीबोर्ड फ़्लिप किए गए दृश्य में छिप जाए (वहां कोई इनपुट फ़ील्ड नहीं है)।विश्वसनीय सॉफ्टकीबोर्ड को छिपाने
मैं इन की कोशिश की है अब तक और बताएँ कि इन विश्वसनीय नहीं हैं:
क्योंकि मैं editTexts के बहुत सारे, और अन्य दृश्य दिखाई देते हैं यह एक काम नहीं किया। मुझे एक और सामान्य की आवश्यकता है, जिसे संभवतः तर्क के रूप में देखने की आवश्यकता नहीं है।
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
यह एक मेरे लिए बिल्कुल काम नहीं करता है:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
यह एक काम करता है, लेकिन तुरंत फिर से कुंजीपटल पॉप जब दृश्य रूप से फ़्लिप किया।
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
यह कभी-कभी काम करता है, लेकिन getCurrentFocus() अधिकांश समय शून्य हो जाता है।
InputMethodManager inputManager = (InputMethodManager)
Context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
यह एक केवल तभी कारगर साबित कुंजीपटल दिखाया गया है:
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
यह एक कोड के पहले टुकड़े की तरह EditText साथ काम नहीं करता है, लेकिन जड़ लेआउट, जो उन्मुखीकरण परिवर्तन पर परिवर्तन के साथ और हर बार ऑनक्वेट कहा जाता है। मेरे पास लैंडस्केप/पोर्ट्रेट और सामान्य/बड़े के लिए अलग-अलग लेआउट एक्सएमएल है। सभी रूट लेआउट में आईडी root
है। यह पहली बार अच्छी तरह से काम करता है, लेकिन उसके बाद, यह अब और काम नहीं करता है।
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(findViewById(R.id.root).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
मुनाफा: softkeyboard छुपा तरीकों में से मैं कोशिश की है hella बहुत है, लेकिन उनमें से कोई भी मज़बूती से काम करने के लिए लगता है। क्या कोई सॉफ़्टवेयर को विश्वसनीय रूप से छिपाने के लिए विधि है?
कुछ परीक्षण के बाद, यह सबसे विश्वसनीय तरीका प्रतीत होता है। – stealthjong
क्या आप कोड उदाहरण भेज सकते हैं? मुझे Toolkit.getEditText (((ViewParent) findViewById (android.R.id.content) कहां रखना चाहिए)। getChildAt (0)); ? – eyal
मुझसे शादी करो !! मैं इतने लंबे समय तक एक अच्छा समाधान खोज रहा था। ऐसा लगता है कि मुझे एक अच्छा (और छोटा) मिला। धन्यवाद! –