নিম্নলিখিত স্নিপেটটি কেবল কীবোর্ডটি আড়াল করে:
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()এবং class tivity ক্রিয়াকলাপের পরিবর্তে এই শ্রেণিটি প্রসারিত করুনin your program
এখানে উপরের ফাংশনের একটি কোটলিন সংস্করণ রয়েছে:
@file:JvmName("KeyboardUtils")
fun Activity.hideSoftKeyboard() {
currentFocus?.let {
val inputMethodManager = ContextCompat.getSystemService(this, InputMethodManager::class.java)!!
inputMethodManager.hideSoftInputFromWindow(it.windowToken, 0)
}
}