Каждое текстовое поле ожидает ввода определенного типа текста, например, адреса электронной почты, номера телефона или обычного текста. Необходимо указать тип ввода для каждого текстового поля в вашем приложении, чтобы система отображала соответствующий метод ввода, например, экранную клавиатуру.
Помимо типов кнопок, доступных при использовании метода ввода, вы можете указать такие параметры, как предоставление орфографических подсказок, добавление заглавных букв в новые предложения и замена кнопки возврата каретки на кнопку действия, например, «Готово» или «Далее» . На этой странице показано, как задать эти характеристики.
Укажите тип клавиатуры
Для указания метода ввода для текстовых полей всегда добавляйте атрибут 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 } }
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 , предоставляющий текстовые подсказки. Доступно несколько адаптеров, в зависимости от источника данных, например, из базы данных или массива.

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