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

רוצה לנסות את שיטת הכתיבה?
'Jetpack פיתוח נייטיב' היא ערכת הכלים המומלצת לממשק המשתמש ל-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" />
סוג הקלט 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" – במקרה כזה לחצן הפעולה הוא פס הזזה החזרה. אבל אפשר לציין פעולות אחרות שעשויות להתאים יותר לשדה הטקסט, למשל Send או Go.

כדי לציין את לחצן הפעולה במקלדת, משתמשים ב 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().