כל שדה טקסט מצפה לסוג מסוים של קלט טקסט, כמו כתובת אימייל, מספר טלפון או פשוט. צריך לציין את סוג הקלט של כל שדה טקסט באפליקציה כדי שהמערכת תציג שיטת הקלט הרכה המתאימה, כגון מקלדת שמופיעה במסך.
מעבר לסוג הלחצנים שזמינים בשיטת קלט, אפשר לציין התנהגויות כמו אם שיטת הקלט מספקת הצעות איות, משתמשת באותיות רישיות במשפטים חדשים ומחליפה את לחצן חזרה לתחילת השורה עם לחצן פעולה כמו סיום או הבא. בדף הזה נסביר איך כדי לציין את המאפיינים האלה.
ציון סוג המקלדת
תמיד צריך להצהיר על שיטת הקלט בשדות הטקסט על-ידי הוספת
android:inputType
ל
רכיב <EditText>
.
![קלט הטלפון](https://developer.android.com/static/images/ui/edittext-phone.png?hl=he)
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](https://developer.android.com/static/images/training/input/ime_password.png?hl=he)
textPassword
.אם שדה הטקסט הוא סיסמה, משתמשים בערך "textPassword"
כך ששדה הטקסט
שמסתיר את הקלט של המשתמש:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
יש כמה ערכים אפשריים שמתועדים באמצעות המאפיין android:inputType
,
ואפשר לשלב כמה מהערכים כדי לציין את המראה של שיטת הקלט
והתנהגויות.
הפעלת הצעות איות והתנהגויות אחרות
![תיקון אוטומטי](https://developer.android.com/static/images/training/input/ime_autocorrect.png?hl=he)
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"
. עבור
דוגמה:
![לחצן שליחה](https://developer.android.com/static/images/ui/edittext-actionsend.png?hl=he)
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
שמספק את הטקסט
הצעות. יש כמה מתאמים זמינים, בהתאם למקור הנתונים, כמו
ממסד נתונים או ממערך.
![הצעות לטקסט](https://developer.android.com/static/images/ui/edittext-autocomplete.png?hl=he)
AutoCompleteTextView
עם טקסט
הצעות.התהליך הבא מתאר איך להגדיר 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()
.