Każde pole tekstowe wymaga podania określonego typu danych, np. adresu e-mail, numeru telefonu zwykły tekst. Musisz określić typ danych wejściowych dla każdego pola tekstowego w aplikacji, aby system wyświetlał odpowiednią metodę programowego wprowadzania tekstu, np. klawiaturę ekranową.
Oprócz typów przycisków dostępnych w przypadku metod wprowadzania można określić sposób ich działania, na przykład czy metoda wprowadzania podaje sugestie pisowni, pisze wielkie litery w nowych zdaniach i zastępuje przejście do nowej linii z przyciskiem polecenia, np. Gotowe lub Dalej. Na tej stronie dowiesz się, i określać te cechy.
Określ typ klawiatury
W polach tekstowych zawsze deklaruj metodę wprowadzania, dodając do
android:inputType
do atrybutu
<EditText>
.
![Telefon](https://developer.android.com/static/images/ui/edittext-phone.png?authuser=9&hl=pl)
phone
.Jeśli na przykład chcesz używać metody wprowadzania numeru telefonu, użyj metody
Wartość "phone"
:
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/phone_hint" android:inputType="phone" />
![Typ danych wejściowych textPassword](https://developer.android.com/static/images/training/input/ime_password.png?authuser=9&hl=pl)
textPassword
.Jeśli pole tekstowe to hasło, użyj wartości "textPassword"
, aby pole tekstowe
ukrywa dane wejściowe użytkownika:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
Istnieje kilka możliwych wartości opisanych za pomocą atrybutu android:inputType
:
i możesz połączyć niektóre wartości, aby określić wygląd metody wprowadzania
zachowań.
Włącz sugestie pisowni i inne funkcje
![autokorekta](https://developer.android.com/static/images/training/input/ime_autocorrect.png?authuser=9&hl=pl)
textAutoCorrect
powoduje autokorektę:
z błędami pisowni.Atrybut android:inputType
pozwala określić różne zachowania danych wejściowych
. Przede wszystkim, jeśli pole tekstowe jest przeznaczone do podstawowego wprowadzania tekstu – np.
SMS – włącz automatyczną korektę pisowni, korzystając z funkcji "textAutoCorrect"
.
Za pomocą tagów
android:inputType
. Oto jak utworzyć pole tekstowe,
zmienia pierwszy wyraz zdania wielką literą i poprawia 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ść prostych metod wprowadzania tekstu zawiera w dolnym rogu przycisk polecenia, który jest odpowiedni dla
w bieżącym polu tekstowym. Domyślnie system używa tego przycisku do kliknięcia przycisku Dalej lub
Gotowe, chyba że pole tekstowe obsługuje tekst wielowierszowy, np.
android:inputType="textMultiLine"
– w którym to przypadku przyciskiem polecenia jest karetka.
. Możesz jednak określić inne działania, które będą bardziej odpowiednie w przypadku Twojego pola tekstowego.
na przykład Wyślij lub Idź.
Aby określić przycisk działania klawiatury, użyj
android:imeOptions
o wartości działania, np. "actionSend"
lub "actionSearch"
. Dla:
przykład:
![przycisk wysyłania](https://developer.android.com/static/images/ui/edittext-actionsend.png?authuser=9&hl=pl)
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ęć przycisku polecenia, definiując
TextView.OnEditorActionListener
dla elementu EditText
. W
detektor, zareagować na odpowiedni identyfikator działania IME zdefiniowany w
EditorInfo
zajęcia,
na przykład
IME_ACTION_SEND
,
jak 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; } });
Sugestie autouzupełniania
Jeśli chcesz wyświetlać sugestie użytkownikom podczas pisania, możesz użyć podklasy
EditText
wywołał(a)
AutoCompleteTextView
Aby zaimplementować autouzupełnianie, musisz określić
Adapter
, który zawiera tekst
sugestie. Dostępnych jest kilka adapterów w zależności od tego, skąd pochodzą dane:
z bazy danych lub tablicy.
![sugestie tekstowe](https://developer.android.com/static/images/ui/edittext-autocomplete.png?authuser=9&hl=pl)
AutoCompleteTextView
z tekstem
sugestie.Poniżej opisano, jak skonfigurować AutoCompleteTextView
, który
udostępnia sugestie z tablicy przy użyciu
ArrayAdapter
:
- Dodaj
AutoCompleteTextView
do układu. Oto układ z samym tekstem pole:<?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ę, która zawiera wszystkie sugestie tekstowe. 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:
Activity
lubFragment
, użyj tego kodu do określ adapter, który generuje 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 element
ArrayAdapter
, który tworzy powiązanie każdego elementu wcountries_array
z tablicą ciągu doTextView
, który istnieje w Układ:simple_list_item_1
. Ten układ jest dostarczany przez Androida, który zapewnia standardowy wygląd tekstu na liście. -
Przypisz przejściówkę do
AutoCompleteTextView
, wywołującsetAdapter()