Menentukan jenis metode input

Mencoba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menggunakan sentuhan dan input di Compose.

Setiap kolom teks mengharapkan jenis input teks tertentu, seperti alamat email, nomor telepon, atau teks biasa. Anda harus menentukan jenis input untuk setiap kolom teks di aplikasi agar sistem menampilkan metode input virtual yang sesuai, seperti keyboard virtual.

Selain jenis tombol yang tersedia dengan metode input, Anda dapat menentukan perilaku seperti apakah metode input akan memberikan saran ejaan, membuat huruf besar pada kalimat baru, dan mengganti tombol enter dengan tombol tindakan seperti Selesai atau Berikutnya. Halaman ini menunjukkan cara menentukan karakteristik tersebut.

Menentukan jenis keyboard

Selalu deklarasikan metode input untuk kolom teks Anda dengan menambahkan atribut android:inputType ke elemen <EditText>.

input telepon
Gambar 1. Jenis input phone.

Misalnya, jika Anda ingin metode input untuk memasukkan nomor telepon, gunakan nilai "phone":

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
Jenis input sandi teks
Gambar 2. Jenis input textPassword.

Jika kolom teks adalah untuk sandi, gunakan nilai "textPassword" sehingga kolom teks menyembunyikan input pengguna:

<EditText
    android:id="@+id/password"
    android:hint="@string/password_hint"
    android:inputType="textPassword"
    ... />

Ada beberapa kemungkinan nilai yang didokumentasikan dengan atribut android:inputType, dan Anda dapat menggabungkan beberapa nilai untuk menentukan tampilan metode input dan perilaku tambahan.

Mengaktifkan saran ejaan dan perilaku lainnya

koreksi otomatis
Gambar 3. Menambahkan textAutoCorrect akan memberikan koreksi otomatis untuk salah ejaan.

Atribut android:inputType memungkinkan Anda menentukan berbagai perilaku untuk metode input. Yang paling penting, jika kolom teks Anda ditujukan untuk input teks dasar, misalnya untuk pesan teks, aktifkan koreksi ejaan otomatis dengan nilai "textAutoCorrect".

Anda dapat menggabungkan berbagai perilaku dan gaya metode input dengan atribut android:inputType. Misalnya, berikut cara membuat kolom teks yang menggunakan huruf besar pada kata pertama dalam kalimat dan juga otomatis mengoreksi kesalahan ejaan:

<EditText
    android:id="@+id/message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType=
        "textCapSentences|textAutoCorrect"
    ... />

Menentukan tindakan metode input

Sebagian besar metode input virtual menyediakan tombol tindakan pengguna di pojok bawah yang sesuai untuk kolom teks saat ini. Secara default, sistem menggunakan tombol ini untuk tindakan Next atau Done kecuali kolom teks Anda mendukung teks multibaris—seperti dengan android:inputType="textMultiLine"—dalam hal ini tombol tindakan adalah enter. Namun, Anda dapat menentukan tindakan lain yang mungkin lebih sesuai untuk kolom teks, seperti Send atau Go.

Untuk menentukan tombol tindakan keyboard, gunakan atribut android:imeOptions dengan nilai tindakan seperti "actionSend" atau "actionSearch". Contoh:

tombol kirim
Gambar 4. Tombol Send akan muncul saat Anda mendeklarasikan 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" />

Anda kemudian dapat memproses penekanan tombol tindakan dengan menentukan TextView.OnEditorActionListener untuk elemen EditText. Di pemroses, respons ID tindakan IME yang sesuai yang ditentukan dalam class EditorInfo, seperti IME_ACTION_SEND, seperti yang ditunjukkan dalam contoh berikut:

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;
    }
});

Memberikan saran pengisian otomatis

Jika ingin memberikan saran kepada pengguna saat mereka mengetik, Anda dapat menggunakan subclass EditText yang disebut AutoCompleteTextView. Untuk mengimplementasikan pelengkapan otomatis, Anda harus menentukan Adapter yang menyediakan saran teks. Ada beberapa adaptor yang tersedia, bergantung dari mana data berasal, seperti dari database atau array.

saran teks
Gambar 5. Contoh AutoCompleteTextView dengan saran teks.

Prosedur berikut menjelaskan cara menyiapkan AutoCompleteTextView yang memberikan saran dari array menggunakan ArrayAdapter:

  1. Tambahkan AutoCompleteTextView ke tata letak Anda. Berikut adalah tata letak yang hanya berisi kolom teks:
    <?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" />
    
  2. Tetapkan array yang berisi semua saran teks. Misalnya, berikut adalah array nama negara:
    <?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>
    
  3. Di Activity atau Fragment, gunakan kode berikut untuk menentukan adaptor yang memberikan saran:

    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);
    

    Pada contoh sebelumnya, ArrayAdapter baru diinisialisasi untuk mengikat setiap item dalam array string countries_array ke TextView yang ada dalam tata letak simple_list_item_1. Tata letak ini disediakan oleh Android yang menyediakan tampilan standar untuk teks dalam daftar.

  4. Tetapkan adaptor ke AutoCompleteTextView dengan memanggil setAdapter().