निम्नलिखित स्निपेट केवल कीबोर्ड छुपाता है:
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager =
(InputMethodManager) activity.getSystemService(
Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
activity.getCurrentFocus().getWindowToken(), 0);
}
आप इसे एक उपयोगिता वर्ग में डाल सकते हैं, या यदि आप इसे किसी गतिविधि के भीतर परिभाषित कर रहे हैं, तो गतिविधि पैरामीटर, या कॉल से बचें hideSoftKeyboard(this)।
मुश्किल हिस्सा है जब यह फोन करने के लिए। आप एक ऐसी विधि लिख सकते हैं Viewजो आपकी गतिविधि में प्रत्येक के माध्यम से पुनरावृत्ति करती है , और जांचें कि क्या यह एक घटक के लिए instanceof EditTextरजिस्टर नहीं है setOnTouchListenerऔर सब कुछ जगह में गिर जाएगा। मामले में आप सोच रहे हैं कि यह कैसे करना है, यह वास्तव में काफी सरल है। यहाँ आप क्या करते हैं, आप निम्न की तरह एक पुनरावर्ती विधि लिखते हैं, वास्तव में आप इसका उपयोग कुछ भी करने के लिए कर सकते हैं, जैसे सेटअप कस्टम टाइपफेस आदि ... यहाँ विधि है
public void setupUI(View view) {
// Set up touch listener for non-text box views to hide keyboard.
if (!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(MyActivity.this);
return false;
}
});
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView);
}
}
}
यह सब है, बस setContentViewअपनी गतिविधि में आपके बाद इस पद्धति को कॉल करें । यदि आप सोच रहे हैं कि आप किस पैरामीटर से गुजरेंगे, तो यह idमूल कंटेनर का है। idअपने माता-पिता के कंटेनर की तरह असाइन करें
<RelativeLayoutPanel android:id="@+id/parent"> ... </RelativeLayout>
और बुलाओ setupUI(findViewById(R.id.parent)), वह सब है।
यदि आप इसे प्रभावी ढंग से उपयोग करना चाहते हैं, तो आप एक विस्तारित बना सकते हैं Activity और में इस विधि रखा, और अपने आवेदन में अन्य सभी गतिविधियों इस गतिविधि का विस्तार करने और अपने फोन बनाने setupUI()में onCreate()विधि।
आशा है ये मदद करेगा।
यदि आप 1 से अधिक गतिविधि का उपयोग करते हैं, तो माता-पिता के लेआउट की तरह सामान्य आईडी को परिभाषित करते हैं
<RelativeLayout android:id="@+id/main_parent"> ... </RelativeLayout>
फिर से एक वर्ग का विस्तार करें और इसके भीतर Activityपरिभाषित करें और `` गतिविधि के बजाय इस वर्ग का विस्तार करेंsetupUI(findViewById(R.id.main_parent))OnResume()in your program
यहाँ उपरोक्त फ़ंक्शन का कोटलिन संस्करण है:
@file:JvmName("KeyboardUtils")
fun Activity.hideSoftKeyboard() {
currentFocus?.let {
val inputMethodManager = ContextCompat.getSystemService(this, InputMethodManager::class.java)!!
inputMethodManager.hideSoftInputFromWindow(it.windowToken, 0)
}
}