مقدمة لإخفاء لوحة مفاتيح Android
عند تطوير تطبيقات Android، هناك أوقات تحتاج فيها إلى إخفاء لوحة المفاتيح الناعمة برمجيًا. يعد هذا مفيدًا بشكل خاص عندما يكون لديك نص تحرير وزر في تخطيطك وتريد أن تختفي لوحة المفاتيح بعد النقر فوق الزر.
في هذا الدليل، سنستكشف طرقًا بسيطة وفعالة لتحقيق هذه الوظيفة. باتباع الخطوات المقدمة، ستتمكن من تحسين تجربة المستخدم لتطبيقك من خلال إدارة رؤية لوحة المفاتيح بكفاءة.
يأمر | وصف |
---|---|
getSystemService | استرداد خدمة على مستوى النظام بالاسم؛ هنا، يتم استخدامه للحصول على InputMethodManager لإدارة لوحة المفاتيح. |
hideSoftInputFromWindow | يخفي لوحة المفاتيح الناعمة من النافذة، مع أخذ الرمز المميز والأعلام كمعلمات. |
getCurrentFocus | إرجاع العرض المركز الحالي في النشاط، والذي يستخدم لتحديد المكان الذي يجب أن تختبئ منه لوحة المفاتيح. |
onClickListener | يقوم بإعداد رد اتصال يتم تشغيله عند النقر على عرض (على سبيل المثال، زر). |
dispatchTouchEvent | يعترض أحداث حركة شاشة اللمس قبل إرسالها إلى النافذة، وهو أمر مفيد للتعامل المخصص مع اللمس. |
windowToken | إرجاع رمز مميز يحدد بشكل فريد النافذة المرتبطة بالعرض، والمطلوب لإخفاء لوحة المفاتيح. |
فهم كيفية إخفاء لوحة مفاتيح Android
في مثال Java، يقوم البرنامج النصي أولاً باستيراد الفئات الضرورية مثل InputMethodManager, View، و EditText. ال onCreate تقوم الطريقة بإعداد التخطيط وتهيئة الملف EditText و Button. عند النقر على الزر، hideKeyboard تسمى الطريقة . تقوم هذه الطريقة باسترداد العرض المركز الحالي باستخدام getCurrentFocus، وإذا كان العرض مركزًا، فإنه يستخدم InputMethodManager لإخفاء لوحة المفاتيح الناعمة عن طريق الاتصال hideSoftInputFromWindow. يؤدي هذا إلى إغلاق لوحة المفاتيح بشكل فعال عند النقر فوق الزر.
في مثال Kotlin، تم تحقيق وظائف مماثلة. يتجاوز البرنامج النصي onCreate طريقة لتعيين عرض المحتوى وتهيئة EditText و Button. الزر الذي ينقر على المستمع يستدعي hideKeyboard طريقة. بالإضافة إلى ذلك، dispatchTouchEvent تم تجاوز الطريقة لإخفاء لوحة المفاتيح عند اللمس بالخارج. تتحقق هذه الطريقة مما إذا كان العرض مركّزًا وتخفي لوحة المفاتيح المستخدمة InputMethodManager. تعمل هذه البرامج النصية على تحسين تجربة المستخدم من خلال إدارة رؤية لوحة المفاتيح الإلكترونية بكفاءة.
إغلاق لوحة مفاتيح Android Soft برمجياً
جافا لتطوير أندرويد
import android.app.Activity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard();
}
});
}
private void hideKeyboard() {
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
إخفاء لوحة المفاتيح عند لمسها بالخارج
كوتلين لتطوير أندرويد
import android.app.Activity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.Button
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.editText)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener { hideKeyboard() }
}
private fun hideKeyboard() {
val view = this.currentFocus
view?.let { v ->
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(v.windowToken, 0)
}
}
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
if (currentFocus != null) {
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
}
return super.dispatchTouchEvent(ev)
}
}
تقنيات متقدمة لإدارة لوحة مفاتيح Android
جانب آخر مهم لإدارة لوحة المفاتيح الناعمة لنظام Android هو التعامل مع رؤيتها استجابةً لتفاعلات المستخدم وتكويناته المختلفة. على سبيل المثال، قد ترغب في ظهور لوحة المفاتيح تلقائيًا عند EditText يكتسب التركيز أو للتأكد من اختفائه عند التنقل بين مكونات واجهة المستخدم المختلفة. ويمكن تحقيق ذلك باستخدام InputMethodManager جنبًا إلى جنب مع عمليات الاسترجاعات الخاصة بدورة الحياة مثل onResume و onPause.
علاوة على ذلك، يمكنك التحكم في سلوك لوحة المفاتيح عن طريق ضبط android:windowSoftInputMode السمة في ملف البيان الخاص بنشاطك. تتيح لك هذه السمة تحديد ما إذا كان يجب على لوحة المفاتيح ضبط تخطيط النشاط أو البقاء مخفيًا حتى يتم طلبها بشكل صريح. يمكن أن يؤدي استخدام هذه التكوينات إلى تحسين تجربة المستخدم بشكل كبير من خلال توفير واجهة أكثر سهولة واستجابة.
أسئلة شائعة حول إخفاء لوحة مفاتيح Android
- كيف يمكنني إخفاء لوحة المفاتيح عند EditText يفقد التركيز؟
- يمكنك تجاوز onFocusChange المستمع EditText و اتصل InputMethodManager.hideSoftInputFromWindow.
- هل يمكنني إظهار لوحة المفاتيح تلقائيًا عند EditText التركيز على المكاسب؟
- نعم استخدم InputMethodManager.showSoftInput في ال onFocusChange المستمع.
- كيف يمكنني إخفاء لوحة المفاتيح في جزء؟
- يتصل InputMethodManager.hideSoftInputFromWindow في سياق عرض الجزء.
- ما هو android:windowSoftInputMode يستعمل ل؟
- وهو يحدد كيفية تفاعل لوحة المفاتيح مع تخطيط النشاط، مثل تغيير الحجم أو البقاء مخفيًا.
- كيف أقوم بإخفاء لوحة المفاتيح عند لمس خارج EditText؟
- تجاوز dispatchTouchEvent في نشاطك للتحقق من أحداث اللمس خارج EditText.
- هل يمكنني إجبار لوحة المفاتيح على البقاء مخفية؟
- نعم، عن طريق الإعداد android:windowSoftInputMode ل stateHidden في البيان.
- كيف يمكنني اكتشاف ما إذا كانت لوحة المفاتيح مرئية حاليًا؟
- يستخدم getWindowVisibleDisplayFrame لمقارنة المنطقة المرئية من الشاشة بارتفاع العرض الجذري.
- هل من الممكن إخفاء لوحة المفاتيح برمجيا بنقرة زر؟
- نعم اتصل InputMethodManager.hideSoftInputFromWindow في الزر onClickListener.
الوجبات السريعة الرئيسية حول إخفاء لوحة مفاتيح Android
في الختام، تعد إدارة لوحة المفاتيح الناعمة لنظام Android أمرًا بالغ الأهمية لتحسين تجربة المستخدم في تطبيقك. باستخدام InputMethodManager، يمكنك إخفاء لوحة المفاتيح أو إظهارها برمجيًا بناءً على تفاعلات المستخدم مثل النقرات على الأزرار أو أحداث اللمس. بالإضافة إلى ذلك، تكوين android:windowSoftInputMode تسمح لك السمة الموجودة في ملف البيان الخاص بك بالتحكم في سلوك لوحة المفاتيح بشكل أكثر دقة. ويضمن تنفيذ هذه الأساليب عدم تداخل وجود لوحة المفاتيح مع سهولة استخدام التطبيق، مما يوفر واجهة سلسة وبديهية للمستخدمين.