Укажите тип метода ввода

Попробуйте способ создания композиций.
Jetpack Compose — это рекомендуемый набор инструментов для создания пользовательского интерфейса для Android. Узнайте, как использовать сенсорный ввод и другие средства ввода в Compose.

Каждое текстовое поле ожидает ввода определенного типа текста, например, адреса электронной почты, номера телефона или обычного текста. Необходимо указать тип ввода для каждого текстового поля в вашем приложении, чтобы система отображала соответствующий метод ввода, например, экранную клавиатуру.

Помимо типов кнопок, доступных при использовании метода ввода, вы можете указать такие параметры, как предоставление орфографических подсказок, добавление заглавных букв в новые предложения и замена кнопки возврата каретки на кнопку действия, например, «Готово» или «Далее» . На этой странице показано, как задать эти характеристики.

Укажите тип клавиатуры

Для указания метода ввода для текстовых полей всегда добавляйте атрибут 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" />
текстовый ввод пароля
Рисунок 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" — в этом случае кнопкой действия является перевод строки. Однако вы можете указать другие действия, которые могут быть более подходящими для вашего текстового поля, например, «Отправить » или «Перейти» .

Чтобы указать кнопку действия на клавиатуре, используйте атрибут 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 , как показано в следующем примере:

Котлин

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 используйте следующий код, чтобы указать адаптер, предоставляющий подсказки:

    Котлин

    // 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() .