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

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه از لمس و ورودی در Compose استفاده کنید.

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

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

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

همیشه با اضافه کردن ویژگی 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" - که در این صورت دکمه‌ی عملیات، یک دکمه‌ی بازگشت به خط است. با این حال، می‌توانید عملیات دیگری را که ممکن است برای فیلد متنی شما مناسب‌تر باشند، مانند Send یا Go ، مشخص کنید.

برای مشخص کردن دکمه‌ی عملیاتی کیبورد، از ویژگی android:imeOptions به همراه یک مقدار عملیاتی مانند "actionSend" یا "actionSearch" استفاده کنید. برای مثال:

دکمه ارسال
شکل ۴. دکمه ارسال (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 ، همانطور که در مثال زیر نشان داده شده است، پاسخ دهید:

کاتلین

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 وجود دارد، متصل کند. این طرح‌بندی توسط اندروید ارائه شده است که ظاهری استاندارد برای متن در یک لیست فراهم می‌کند.

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