خيارات لوحة المفاتيح وإجراءاتها
تعرّف إلى أنواع لوحة المفاتيح وإجراءات IME والتركيز
خيارات لوحة المفاتيح وإجراءاتها درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
لوحة المفاتيح المناسبة للمهمة
يعرض النموذج المتقن لوحة المفاتيح الصحيحة على الشاشة: أرقام للهاتف، ومفتاح @ للبريد الإلكتروني، وزر «التالي» للانتقال بين الحقول. ويتحكم Compose في كل ذلك باستخدام KeyboardOptions وKeyboardActions.
في هذا الدرس ستضبط أنواع لوحات المفاتيح وإجراءات IME، وتدير التركيز بين الحقول.
اختيار نوع لوحة المفاتيح
مرّر KeyboardOptions إلى حقل نص واضبط keyboardType. عندها يعرض النظام لوحة مفاتيح مناسبة للبيانات.
القيم الشائعة: Text وNumber وEmail وPhone وPassword.
var email by remember { mutableStateOf("") }
OutlinedTextField(
value = email,
onValueChange = { email = it },
label = { Text("Email") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
)
)لوحة مفاتيح للأرقام
للكمية أو رمز PIN، استخدم KeyboardType.Number. واجمعه مع تصفية المدخلات بحيث لا تُقبل إلا الأرقام، كما تعلمت في درس التحقق.
var pin by remember { mutableStateOf("") }
OutlinedTextField(
value = pin,
onValueChange = { pin = it.filter { c -> c.isDigit() } },
label = { Text("PIN") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
)
)إخفاء كلمة المرور
ينبغي إخفاء كلمات المرور. استخدم visualTransformation = PasswordVisualTransformation() مع نوع لوحة مفاتيح كلمة المرور.
تظل الحالة محتفظة بالأحرف الفعلية، بينما يُخفى عرضها فقط.
var password by remember { mutableStateOf("") }
OutlinedTextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
)
)زر إجراء IME
المفتاح الموجود في الزاوية السفلية اليمنى من لوحة المفاتيح هو إجراء IME. اضبطه باستخدام imeAction. استخدم Next للانتقال إلى الحقل التالي، وDone في الحقل الأخير.
OutlinedTextField(
value = name,
onValueChange = { name = it },
label = { Text("Name") },
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
)
)الاستجابة لإجراءات IME
للاستجابة عند نقر المستخدم على ذلك الزر، مرّر KeyboardActions. كل إجراء (onNext وonDone وonSearch) هو lambda تنفّذها.
يؤدي الضغط على Done هنا إلى إخفاء لوحة المفاتيح.
val keyboard = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { keyboard?.hide() }
)
)نقل التركيز إلى الحقل التالي
في نموذج متعدد الحقول، ينبغي لزر «التالي» الانتقال إلى الحقل التالي. استخدم LocalFocusManager واستدعِ moveFocus.
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = email,
onValueChange = { email = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = { focusManager.moveFocus(FocusDirection.Down) }
)
)إزالة التركيز عند الضغط على Done
في الحقل الأخير، تؤدي إزالة التركيز إلى إخفاء لوحة المفاتيح وإلغاء تحديد الحقل. استدعِ focusManager.clearFocus() داخل onDone.
OutlinedTextField(
value = password,
onValueChange = { password = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.clearFocus() }
)
)طلب التركيز برمجيًا
قد ترغب أحيانًا في تركيز حقل بمجرد ظهور الشاشة، مثل مربع البحث. أرفق FocusRequester واطلب التركيز داخل LaunchedEffect.
val focusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) { focusRequester.requestFocus() }
OutlinedTextField(
value = query,
onValueChange = { query = it },
modifier = Modifier.focusRequester(focusRequester),
label = { Text("Search") }
)الكتابة بالأحرف الكبيرة والتصحيح التلقائي
يتحكم KeyboardOptions أيضًا في capitalization وautoCorrectEnabled. اجعل الحرف الأول من كل كلمة كبيرًا للاسم، أو عطّل التصحيح التلقائي لاسم المستخدم حتى لا يُشوَّه.
OutlinedTextField(
value = fullName,
onValueChange = { fullName = it },
label = { Text("Full name") },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Words,
autoCorrectEnabled = false
)
)Kotlin خالصة: اختيار إجراء IME
إن منطق «Next لكل حقل باستثناء الأخير، وDone في الأخير» هو Kotlin عادية. نربط هنا مواضع الحقول بتسمية الإجراء التي ينبغي أن تعرضها.
fun imeActionFor(index: Int, lastIndex: Int): String =
if (index == lastIndex) "Done" else "Next"
fun main() {
val fields = listOf("name", "email", "password")
fields.forEachIndexed { i, field ->
println("$field -> ${imeActionFor(i, fields.lastIndex)}")
}
}تحقق سريع
تريد أن يعرض الزر الموجود في الزاوية السفلية اليمنى من لوحة المفاتيح كلمة «التالي»، وأن ينقل التركيز إلى الحقل الموجود أسفله عند النقر عليه. ما العنصران اللذان تحتاج إليهما؟
مراجعة
أصبحت الآن قادرًا على إنشاء نماذج تتعامل بذكاء مع لوحة المفاتيح:
- يحدد
KeyboardOptionsكلًا منkeyboardTypeوimeActionوالكتابة بالأحرف الكبيرة والتصحيح التلقائي. - أخفِ كلمات المرور باستخدام
PasswordVisualTransformation. - يستجيب
KeyboardActionsلإجراءات Next وDone وSearch. - ينقل
LocalFocusManagerالتركيز أو يزيله، بينما يركّزFocusRequesterعلى حقل عند الطلب.
وبذلك تكتمل أدوات إنشاء النماذج: الإدخال والحالة والتحقق ولوحة المفاتيح. أنتم مستعدون لإنشاء نماذج Compose متقنة وسهلة الاستخدام.
الأسئلة الشائعة
هل درس «خيارات لوحة المفاتيح وإجراءاتها» مجاني؟
نعم — نص درس «خيارات لوحة المفاتيح وإجراءاتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «خيارات لوحة المفاتيح وإجراءاتها»؟
تعرّف إلى أنواع لوحة المفاتيح وإجراءات IME والتركيز تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «خيارات لوحة المفاتيح وإجراءاتها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- TextField وإدخال المستخدم
- إدارة حالة النموذج
- التحقق من صحة الإدخال
- خيارات لوحة المفاتيح وإجراءاتها