نوع روش ورودی را مشخص کنید

امتحان کردن روش «نوشتن»
‫Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه استفاده از لمس و ورودی در «نوشتن» آشنا شوید.

هر فیلد نوشتاری نوع خاصی از ورودی نوشتاری را انتظار دارد، مثلاً نشانی ایمیل، شماره تلفن، یا نوشتار ساده. باید نوع ورودی را برای هر فیلد نوشتاری در برنامه‌تان مشخص کنید تا سیستم روش ورودی نرم مناسب، مثل صفحه‌کلید مجازی، را نمایش دهد.

علاوه‌بر نوع دکمه‌های دردسترس در روش ورودی، می‌توانید عملکردهایی مثل اینکه روش ورودی پیشنهادهای املایی ارائه دهد، جمله‌های جدید را با حروف بزرگ شروع کند، و دکمه بازگشت سطری را با دکمه کنشی مثل انجام شد یا بعدی جایگزین کند را مشخص کنید. این صفحه نشان می‌دهد چگونه این مشخصات را تعیین کنید.

نوع صفحه‌کلید را مشخص کنید

همواره روش ورودی را برای فیلدهای نوشتاری خود با افزودن 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.

اگر فیلد نوشتاری برای گذرواژه است، از مقدار "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 پیشنهادهایی از آرایه ارائه می‌دهد:

  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، از کد زیر برای مشخص کردن آداپتوری که پیشنهادها را ارائه می‌دهد استفاده کنید:

    کاتلین

    // 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 ارائه می‌دهد و ظاهر استانداردی برای نوشتار در فهرست فراهم می‌کند.

  4. با تماس گرفتن با setAdapter()، آداپتور را به AutoCompleteTextView اختصاص دهید.