ציון סוג שיטת הקלט

כדאי לנסות את התכונה 'כתיבה מהירה'
Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ב-Android. איך משתמשים במגע ובקלט ב-Compose

כל שדה טקסט מצפה לסוג מסוים של קלט טקסט, כמו כתובת אימייל, מספר טלפון או טקסט פשוט. עליכם לציין את סוג הקלט לכל שדה טקסט באפליקציה כדי שהמערכת תציג את שיטת הקלט הרלוונטית, כמו מקלדת במסך.

בנוסף לסוג הלחצנים שזמינים בשיטת הקלט, אפשר לציין התנהגויות כמו: האם שיטת הקלט מספקת הצעות לאיות, האם היא הופכת משפטים חדשים לאותיות רישיות והאם היא מחליפה את לחצן החזרה למחרוזת הקודמת בלחצן פעולה כמו סיום או הבא. בדף הזה נסביר איך לציין את המאפיינים האלה.

מציינים את סוג המקלדת

תמיד צריך להצהיר על שיטת הקלט של שדות הטקסט על ידי הוספת המאפיין 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" />
סוג הקלט textPassword
איור 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. הלחצן Send מופיע כשמגדירים את 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().