هر فیلد نوشتاری نوع خاصی از ورودی نوشتاری را انتظار دارد، مثلاً نشانی ایمیل، شماره تلفن، یا نوشتار ساده. باید نوع ورودی را برای هر فیلد نوشتاری در برنامهتان مشخص کنید تا سیستم روش ورودی نرم مناسب، مثل صفحهکلید مجازی، را نمایش دهد.
علاوهبر نوع دکمههای دردسترس در روش ورودی، میتوانید عملکردهایی مثل اینکه روش ورودی پیشنهادهای املایی ارائه دهد، جملههای جدید را با حروف بزرگ شروع کند، و دکمه بازگشت سطری را با دکمه کنشی مثل انجام شد یا بعدی جایگزین کند را مشخص کنید. این صفحه نشان میدهد چگونه این مشخصات را تعیین کنید.
نوع صفحهکلید را مشخص کنید
همواره روش ورودی را برای فیلدهای نوشتاری خود با افزودن
android:inputType
مشخصه به
عنصر <EditText> اعلام کنید.
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.اگر فیلد نوشتاری برای گذرواژه است، از مقدار "textPassword" استفاده کنید تا فیلد نوشتاری ورودی کاربر را پنهان کند:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
چندین مقدار ممکن برای مشخصه android:inputType مستند شده است،
و میتوانید برخیاز مقادیر را ترکیب کنید تا ظاهر روش ورودی و عملکردهای
اضافی را مشخص کنید.
فعال کردن پیشنهادهای املایی و عملکردهای دیگر
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" استفاده کنید. برای مثال:
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،
پاسخ دهید،
همانطور که در مثال زیر نشان داده شده است:
کاتلین
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return@setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }
جاوا
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 با پیشنهادهای نوشتاری.روال زیر نحوه راهاندازی 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، از کد زیر برای مشخص کردن آداپتوری که پیشنهادها را ارائه میدهد استفاده کنید:کاتلین
// 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) }
جاوا
// 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 ارائه میدهد و ظاهر استانداردی برای نوشتار در فهرست فراهم میکند. -
با تماس گرفتن با
setAdapter()، آداپتور را بهAutoCompleteTextViewاختصاص دهید.