تحديد نوع أسلوب الإدخال

تجربة طريقة ComposeAllowed
Jetpack Compose هي مجموعة أدوات واجهة المستخدم التي ننصح بها لنظام التشغيل Android. تعرَّف على كيفية استخدام اللمس والإدخال في ميزة "إنشاء".

يتوقع كل حقل نصي نوعًا معينًا من إدخال النص، مثل عنوان البريد الإلكتروني أو رقم الهاتف أو نص عادي. يجب تحديد نوع الإدخال لكل حقل نص في تطبيقك حتى يعرض النظام طريقة الإدخال البسيطة المناسبة، مثل لوحة المفاتيح على الشاشة.

بالإضافة إلى نوع الأزرار المتاحة مع أسلوب الإدخال، يمكنك تحديد سلوكيات مثل ما إذا كان أسلوب الإدخال يقدم اقتراحات إملائية، ويجعل الجمل الجديدة كبيرًا، ويستبدل زر الرجوع مع زر إجراء، مثل تم أو التالي. توضح هذه الصفحة كيف لتحديد هذه السمات.

تحديد نوع لوحة المفاتيح

أعلن دائمًا عن أسلوب الإدخال للحقول النصية من خلال إضافة android:inputType إلى <EditText>.

إدخال الهاتف
الشكل 1. نوع الإدخال: phone

على سبيل المثال، إذا كنت تريد أسلوب إدخال لإدخال رقم هاتف، فاستخدم قيمة "phone":

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
نوع إدخال نص كلمة المرور
الشكل 2. نوع الإدخال: textPassword

إذا كان حقل النص يشير إلى كلمة مرور، استخدِم القيمة "textPassword" لكي يظهر الحقل النصي لإخفاء إدخال المستخدم:

<EditText
    android:id="@+id/password"
    android:hint="@string/password_hint"
    android:inputType="textPassword"
    ... />

تتوفر عدة قيم محتملة موثّقة باستخدام السمة android:inputType، ويمكنك دمج بعض القيم لتحديد مظهر أسلوب الإدخال وسلوكياتهم.

تفعيل الاقتراحات الإملائية والسلوكيات الأخرى

التصحيح التلقائي
الشكل 3. تؤدي إضافة textAutoCorrect إلى توفير تصحيح تلقائي الأخطاء الإملائية

تتيح لك السمة 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". بالنسبة مثال:

زر الإرسال
الشكل 4. يظهر الزر إرسال عند الإعلان android:imeOptions="actionSend"
<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 الذي يقدّم النص الاقتراحات. هناك العديد من المحولات المتاحة، بناءً على مصدر البيانات، مثل من قاعدة بيانات أو صفيفة.

اقتراحات نصية
الشكل 5. مثال على AutoCompleteTextView مع نص الاقتراحات

يصف الإجراء التالي طريقة إعداد AutoCompleteTextView التي توفر اقتراحات من صفيف باستخدام ArrayAdapter:

  1. أضِف 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" />
    
  2. حدِّد الصفيف الذي يحتوي على جميع الاقتراحات النصية. على سبيل المثال، إليك مصفوفة من أسماء البلدان:
    <?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>
    
  3. في 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 ويوفر المظهر القياسي للنص في قائمة.

  4. يمكنك تخصيص المحوّل لـ "AutoCompleteTextView" من خلال إجراء مكالمة setAdapter()