يتوقع كل حقل نصي نوعًا معينًا من إدخال النص، مثل عنوان البريد الإلكتروني أو رقم الهاتف أو نص عادي. يجب تحديد نوع الإدخال لكل حقل نص في تطبيقك حتى يعرض النظام طريقة الإدخال البسيطة المناسبة، مثل لوحة المفاتيح على الشاشة.
بالإضافة إلى نوع الأزرار المتاحة مع أسلوب الإدخال، يمكنك تحديد سلوكيات مثل ما إذا كان أسلوب الإدخال يقدم اقتراحات إملائية، ويجعل الجمل الجديدة كبيرًا، ويستبدل زر الرجوع مع زر إجراء، مثل تم أو التالي. توضح هذه الصفحة كيف لتحديد هذه السمات.
تحديد نوع لوحة المفاتيح
أعلن دائمًا عن أسلوب الإدخال للحقول النصية من خلال إضافة
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()