Każde pole tekstowe wymaga podania określonego typu danych, np. adresu e-mail, numeru telefonu lub zwykłego tekstu. Musisz określić typ wprowadzania dla każdego pola tekstowego w aplikacji, aby system wyświetlał odpowiednią metodę wprowadzania tekstu, np. klawiaturę ekranową.
Oprócz typów przycisków dostępnych w przypadku metody wprowadzania możesz określić sposób działania, na przykład to, czy metoda wprowadzania ma wyświetlać sugestie pisowni, pisać wielkimi literami w nowych zdaniach czy zastępować przycisk powrotu karetki przyciskiem polecenia, na przykład Gotowe lub Dalej. Z tego artykułu dowiesz się, jak określić te cechy.
Określ typ klawiatury
Zawsze deklaruj metodę wprowadzania w polach tekstowych, dodając do elementu <EditText>
atrybut android:inputType
.
Jeśli na przykład potrzebujesz 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 hasłem, użyj wartości "textPassword"
, by 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 podanych w atrybucie android:inputType
. Możesz połączyć niektóre z nich, aby określić wygląd metody wprowadzania i dodatkowe zachowania.
Włącz sugestie pisowni i inne funkcje
Atrybut android:inputType
pozwala określić różne zachowania metody wprowadzania. Najważniejsze jest jednak to, że jeśli pole tekstowe jest przeznaczone do podstawowego wpisywania tekstu (np. w przypadku SMS-a), 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ć np. pole tekstowe z wielką literą pierwszego wyrazu i poprawiające 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 użytkownika, który jest odpowiedni w przypadku 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 przyciskiem polecenia jest przejście do nowej linii. W polu tekstowym możesz jednak określić inne działania, takie jak Wyślij lub OK.
Aby określić przycisk działania klawiatury, 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" />
Następnie możesz nasłuchiwać naciśnięć przycisku polecenia, definiując TextView.OnEditorActionListener
dla elementu EditText
. W odbiorniku odpowiedz na odpowiedni identyfikator działania IME zdefiniowany w klasie EditorInfo
, 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
o nazwie AutoCompleteTextView
.
Aby zaimplementować autouzupełnianie, musisz określić właściwość Adapter
, która podpowiada tekst. Dostępnych jest kilka adapterów w zależności od tego, skąd pochodzą dane, np. z bazy danych lub tablicy.
Poniżej opisaliśmy, jak skonfigurować pole AutoCompleteTextView
z sugestiami na podstawie tablicy przy użyciu ArrayAdapter
:
- Dodaj
AutoCompleteTextView
do układu. Tak wygląda 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ę, która zawiera wszystkie sugestie tekstowe. Na przykład taka 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, aby określić adapter, który dostarcza 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
w celu powiązania każdego elementu w tablicy ciągucountries_array
zTextView
istniejącym w układziesimple_list_item_1
. Android to układ, który zapewnia standardowy wygląd tekstu na liście. -
Przypisz przejściówkę do
AutoCompleteTextView
, wywołującsetAdapter()
.