يتوقع كل حقل نصي نوعًا معينًا من الإدخال النصي، مثل عنوان بريد إلكتروني أو رقم هاتف أو نص عادي. يجب تحديد نوع الإدخال لكل حقل نصي في تطبيقك حتى يعرض النظام أسلوب الإدخال الأولي المناسب، مثل لوحة مفاتيح على الشاشة.
بالإضافة إلى نوع الأزرار المتاحة مع أسلوب الإدخال، يمكنك تحديد السلوكيات، مثل ما إذا كانت طريقة الإدخال توفّر اقتراحات إملائية، وتجمع جمل جديدة، واستبدل زر الرجوع إلى أول السطر بزر إجراء مثل تمّ أو التالي. توضح هذه الصفحة كيفية تحديد هذه الخصائص.
تحديد نوع لوحة المفاتيح
حدِّد دائمًا طريقة الإدخال للحقول النصية من خلال إضافة السمة android:inputType
إلى العنصر <EditText>
.
على سبيل المثال، إذا كنت تريد أسلوب إدخال لإدخال رقم هاتف، استخدِم القيمة "phone"
:
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/phone_hint" android:inputType="phone" />
إذا كان الحقل النصي مخصّصًا لكلمة مرور، استخدِم القيمة "textPassword"
بحيث يخفي الحقل النصي إدخال المستخدم:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
هناك العديد من القيم المحتملة الموثَّقة باستخدام السمة android:inputType
،
ويمكنك دمج بعض القيم لتحديد مظهر أسلوب الإدخال
والسلوكيات الإضافية.
تفعيل الاقتراحات الإملائية والسلوكيات الأخرى
تتيح لك السمة android:inputType
تحديد سلوكيات مختلفة لطريقة الإدخال. الأهم من ذلك، إذا كان حقل النص مخصّصًا لإدخال النص الأساسي، مثل رسالة نصية، فعِّل ميزة "التصحيح الإملائي التلقائي" باستخدام القيمة "textAutoCorrect"
.
يمكنك الجمع بين السلوكيات وأنماط أساليب الإدخال المختلفة في السمة android:inputType
. على سبيل المثال، إليك كيفية إنشاء حقل نصي يُكتب
بأحرف كبيرة الكلمة الأولى من الجملة ويصحح الأخطاء الإملائية تلقائيًا:
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
تحديد إجراء أسلوب الإدخال
توفر معظم طرق الإدخال الأولي زر إجراء للمستخدم في الزاوية السفلية مناسبًا لحقل النص الحالي. بشكل تلقائي، يستخدم النظام هذا الزر لإجراء التالي أو تم، ما لم يكن الحقل النصي يتيح نصًا متعدد الأسطر، كما هو الحال مع android:inputType="textMultiLine"
، وفي هذه الحالة يكون زر الإجراء هو رجوع إلى أول السطر. مع ذلك، يمكنك تحديد إجراءات أخرى قد تكون أكثر ملاءمة لحقل النص،
مثل إرسال أو انتقال.
لتحديد زر الإجراء في لوحة المفاتيح، استخدِم السمة android:imeOptions
مع قيمة إجراء، مثل "actionSend"
أو "actionSearch"
. على سبيل المثال:
<EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_hint" android:inputType="text" android:imeOptions="actionSend" />
يمكنك بعد ذلك الاستماع إلى الضغطات على زر الإجراء عن طريق تحديد TextView.OnEditorActionListener
للعنصر EditText
. في
المستمع، استجب إلى رقم تعريف إجراء IME المناسب المحدد في
فئة EditorInfo
،
مثل
IME_ACTION_SEND
،
كما هو موضح في المثال التالي:
Kotlin
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return@setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }
Java
EditText editText = (EditText) findViewById(R.id.search); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_SEND) { sendMessage(); handled = true; } return handled; } });
تقديم اقتراحات للإكمال التلقائي
إذا أردت تقديم اقتراحات للمستخدمين أثناء الكتابة، يمكنك استخدام فئة فرعية من
EditText
تُسمى
AutoCompleteTextView
.
لتنفيذ الإكمال التلقائي، يجب تحديد
Adapter
يقدِّم الاقتراحات
النصية. تتوفر العديد من المحوّلات، اعتمادًا على مصدر البيانات، مثل
من قاعدة بيانات أو مصفوفة.
يوضّح الإجراء التالي كيفية إعداد AutoCompleteTextView
يقدّم اقتراحات من مصفوفة باستخدام ArrayAdapter
:
- أضِف
AutoCompleteTextView
إلى التنسيق. وفي ما يلي تنسيق يتضمن حقل النص فقط:<?xml version="1.0" encoding="utf-8"?> <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" />
- حدِّد الصفيف الذي يحتوي على جميع الاقتراحات النصية. على سبيل المثال، في ما يلي
مجموعة من أسماء البلدان:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> ... </string-array> </resources>
- في
Activity
أوFragment
، استخدِم الرمز التالي لتحديد المحوِّل الذي يقدِّم الاقتراحات:Kotlin
// Get a reference to the AutoCompleteTextView in the layout. val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView // Get the string array. val countries: Array<out String> = resources.getStringArray(R.array.countries_array) // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter -> textView.setAdapter(adapter) }
Java
// Get a reference to the AutoCompleteTextView in the layout. AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); // Get the string array. String[] countries = getResources().getStringArray(R.array.countries_array); // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries); textView.setAdapter(adapter);
في المثال السابق، يتم إعداد
ArrayAdapter
جديد لربط كل عنصر في مصفوفة سلسلةcountries_array
بعنصرTextView
متوفّر في تنسيقsimple_list_item_1
. هذا تنسيق يوفره Android ويوفر مظهرًا قياسيًا للنص في القائمة. -
يمكنك تخصيص المحوّل لجهاز "
AutoCompleteTextView
" من خلال الاتصال بـsetAdapter()
.