Każde pole tekstowe wymaga podania określonego typu tekstu, np. adresu e-mail, numeru telefonu lub zwykłego tekstu. Musisz określić typ każdego pola tekstowego w aplikacji, aby system wyświetlał odpowiednią metodę programowego wprowadzania danych, taką jak klawiatura ekranowa.
Oprócz typu przycisków dostępnych w przypadku danej metody wprowadzania możesz określić zachowania, takie jak to, czy metoda wprowadzania oferuje sugestie pisowni, nowe zdania rozpoczynają się wielkimi literami czy powoduje zastępowanie przycisku powrotu karetki jednym z przycisków polecenia, np. Gotowe lub Dalej. Tutaj dowiesz się, jak określić te cechy.
Określanie typu klawiatury
Metodę wprowadzania w polach tekstowych zawsze deklaruj, dodając do elementu <EditText>
atrybut android:inputType
.
Jeśli na przykład chcesz używać metody wprowadzania 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" />
Jeśli pole tekstowe jest na hasło, użyj wartości "textPassword"
, by ukryć 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 za pomocą atrybutu android:inputType
. Niektóre z nich możesz łączyć, aby określić wygląd metody wprowadzania i dodatkowe zachowania.
Włącz propozycje pisowni i inne działania
Atrybut android:inputType
pozwala określić różne zachowania metody wprowadzania. Jeśli Twoje pole tekstowe jest przeznaczone do podstawowego wprowadzania 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 metod wprowadzania. Oto jak utworzyć pole tekstowe z wielkimi literami pierwszego wyrazu i poprawić błędy pisowni:
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
Określ działanie metody wprowadzania
Większość metod niepłynnego wprowadzania ma w dolnym rogu przycisk polecenia użytkownika, który pasuje do bieżącego pola tekstowego. Domyślnie system używa tego przycisku do wykonania działania Dalej lub Gotowe, chyba że pole tekstowe obsługuje tekst wielowierszowy, np. android:inputType="textMultiLine"
. W takim przypadku przycisk polecenia powoduje przejście do nowej linii. Możesz jednak określić inne działania, które lepiej sprawdzą się w przypadku Twojego pola tekstowego, np. Wyślij lub Przejdź.
Aby określić przycisk polecenia na klawiaturze, użyj atrybutu android:imeOptions
z wartością działania, np. "actionSend"
lub "actionSearch"
. Przykład:
<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" />
Aby wykrywać naciśnięcia przycisku polecenia, zdefiniuj parametr TextView.OnEditorActionListener
dla elementu EditText
. W nasłuchującym odpowiedz na odpowiedni identyfikator działania IME zdefiniowany w klasie EditorInfo
, taki jak 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; } });
wyświetlać sugestie autouzupełniania,
Jeśli chcesz oferować sugestie użytkownikom podczas pisania, możesz użyć podklasy EditText
o nazwie AutoCompleteTextView
.
Aby zaimplementować autouzupełnianie, musisz podać element Adapter
zawierający sugestie tekstowe. Dostępnych jest kilka adapterów dostosowanych do różnych źródeł danych, np. z bazy danych lub tablicy.
Poniżej opisujemy, jak skonfigurować element AutoCompleteTextView
, który dostarcza sugestie z tablicy za pomocą ArrayAdapter
:
- Dodaj
AutoCompleteTextView
do układu. Oto układ z samym polem tekstowym:<?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 tekstu. Oto na przykład tablica z nazwami 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
Activity
lubFragment
użyj tego kodu, aby określić adapter obsługujący 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 zainicjowano nowy element
ArrayAdapter
w celu powiązania każdego elementu w tablicycountries_array
z ciągiemTextView
występującym 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ąc metodęsetAdapter()
.