Każde pole tekstowe oczekuje określonego typu danych wejściowych, np. adresu e-mail, numeru telefonu lub zwykłego tekstu. W przypadku każdego pola tekstowego w aplikacji musisz określić typ danych wejściowych, aby system wyświetlał odpowiednią programową metodę wprowadzania, np. klawiaturę ekranową.
Oprócz typu przycisków dostępnych w metodzie wprowadzania możesz określić zachowania, takie jak to, czy metoda wprowadzania ma podpowiadać sugestie pisowni, rozpoczynać nowe zdania wielką literą i zastępować przycisk przejścia do nowej linii przyciskiem polecenia, np. Gotowe lub Dalej. Na tej stronie dowiesz się, jak określić te cechy.
Określanie typu klawiatury
Zawsze deklaruj metodę wprowadzania dla pól tekstowych, dodając atrybut do elementu.android:inputType<EditText>
phone.Jeśli na przykład chcesz użyć metody wprowadzania do wpisywania numeru telefonu, użyj wartości "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.Jeśli pole tekstowe jest przeznaczone na hasło, użyj wartości "textPassword", aby pole tekstowe ukrywało dane wejściowe użytkownika:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
Istnieje kilka możliwych wartości udokumentowanych w atrybucie android:inputType. Możesz połączyć niektóre z nich, aby określić wygląd metody wprowadzania i dodatkowe zachowania.
Włączanie sugestii pisowni i innych zachowań
textAutoCorrect włącza autokorektę błędów pisowni.Atrybut android:inputType umożliwia określenie różnych zachowań metody wprowadzania. Co najważniejsze, jeśli pole tekstowe jest przeznaczone do wprowadzania podstawowego tekstu, np. wiadomości tekstowej, włącz automatyczną korektę pisowni za pomocą wartości "textAutoCorrect".
Za pomocą atrybutu android:inputType możesz łączyć różne zachowania i style metody wprowadzania. Oto na przykład, jak utworzyć pole tekstowe, które rozpoczyna zdanie wielką literą i automatycznie poprawia błędy pisowni:
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
Określanie działania metody wprowadzania
Większość metod wprowadzania programowego udostępnia w dolnym rogu przycisk polecenia odpowiedni dla bieżącego pola tekstowego. Domyślnie system używa tego przycisku do działania Dalej lub Gotowe, chyba że pole tekstowe obsługuje tekst wielowierszowy, np. za pomocą android:inputType="textMultiLine". W takim przypadku przycisk polecenia jest przejściem do nowej linii. Możesz jednak określić inne działania, które mogą być bardziej odpowiednie dla Twojego pola tekstowego, np. Wyślij lub Przejdź.
Aby określić przycisk polecenia klawiatury, użyj atrybutu
android:imeOptions
z wartością działania, np. "actionSend" lub "actionSearch". Przykład:
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" />
Następnie możesz nasłuchiwać naciśnięcia przycisku polecenia, definiując TextView.OnEditorActionListener dla elementu EditText. W detektorze odpowiedz na odpowiedni identyfikator działania IME zdefiniowany w klasie EditorInfo, np. IME_ACTION_SEND, jak pokazano w tym przykładzie:
Kotlin
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; } });
Podawanie sugestii autouzupełniania
Jeśli chcesz podawać użytkownikom sugestie podczas pisania, możesz użyć podklasy EditText o nazwie AutoCompleteTextView.
Aby zaimplementować autouzupełnianie, musisz określić Adapter, który będzie podawać sugestie tekstowe. Dostępnych jest kilka adapterów, w zależności od tego, skąd pochodzą dane, np. z bazy danych lub tablicy.
AutoCompleteTextView z sugestiami tekstowymi.Poniższa procedura opisuje, jak skonfigurować AutoCompleteTextView, który podaje sugestie z tablicy za pomocą ArrayAdapter:
- Dodaj
AutoCompleteTextViewdo układu. Oto układ zawierający tylko pole tekstowe:<?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" />
- Zdefiniuj tablicę zawierającą wszystkie sugestie tekstowe. Oto na przykład
tablica nazw krajów:
<?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>
- W
ActivitylubFragmentużyj tego kodu, aby określić adapter, który będzie podawać sugestie:Kotlin
// 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);
W poprzednim przykładzie inicjowany jest nowy
ArrayAdapter, aby powiązać każdy element tablicy tekstowejcountries_arrayz elementemTextView, który znajduje się w układziesimple_list_item_1. Jest to układ udostępniany przez Androida, który zapewnia standardowy wygląd tekstu na liście. -
Przypisz adapter do
AutoCompleteTextView, wywołującsetAdapter().