निम्नलिखित स्निपेट केवल कीबोर्ड छुपाता है:
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)
}
}