Menentukan jenis metode masukan

Setiap kolom teks mengharapkan jenis masukan teks tertentu, seperti alamat email, nomor telepon, atau hanya teks biasa. Penting untuk menetapkan jenis masukan untuk setiap kolom teks di aplikasi Anda sehingga sistem akan menampilkan metode masukan virtual yang sesuai (seperti keyboard di layar).

Di luar jenis tombol yang tersedia dengan metode masukan, Anda perlu menentukan perilaku seperti: apakah metode masukan akan memberikan saran ejaan, mengubah kalimat baru, dan mengganti tombol enter dengan tombol tindakan seperti Selesai atau Berikutnya. Tutorial ini menunjukkan cara menentukan karakteristik ini.

Menentukan jenis keyboard

Anda harus selalu mendeklarasikan metode masukan untuk bidang teks dengan menambahkan atribut android:inputType ke elemen <EditText>.

Gambar 1. Jenis masukan phone.

Misalnya, jika Anda ingin ada metode masukan 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" />
    

Gambar 2. Jenis masukan textPassword.

Atau jika kolom teks adalah untuk sandi, gunakan nilai "textPassword" sehingga kolom teks menyembunyikan masukan pengguna:

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

Ada beberapa nilai yang mungkin didokumentasikan dengan atribut android:inputType dan beberapa nilai dapat digabungkan untuk menentukan tampilan metode masukan dan perilaku tambahan.

Mengaktifkan saran ejaan dan perilaku lainnya

Gambar 3. Penambahan textAutoCorrect akan memberikan koreksi otomatis untuk kesalahan ejaan.

Atribut android:inputType memungkinkan Anda menentukan berbagai perilaku untuk metode masukan. Yang paling penting, jika kolom teks ditujukan untuk masukan teks dasar (seperti untuk pesan teks), Anda harus mengaktifkan koreksi ejaan otomatis dengan nilai "textAutoCorrect".

Anda dapat menggabungkan berbagai perilaku dan gaya metode masukan dengan atribut android:inputType. Contoh, berikut adalah cara membuat kolom teks yang menggunakan huruf besar kata pertama dari sebuah kalimat dan juga mengoreksi kesalahan ejaan secara otomatis:

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

Menentukan tindakan metode masukan

Sebagian besar metode masukan virtual menyediakan tombol tindakan pengguna di sudut bawah yang sesuai untuk kolom teks saat ini. Secara default, sistem akan menggunakan tombol ini untuk tindakan Berikutnya atau Selesai kecuali kolom teks Anda memungkinkan teks multi-baris (seperti dengan android:inputType="textMultiLine"), dalam hal ini tombol tindakan berupa enter. Namun, Anda dapat menentukan tindakan tambahan yang mungkin lebih sesuai untuk kolom teks Anda, seperti Kirim atau Mulai.

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

Gambar 4. Tombol Kirim 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. Pada pemroses Anda, balas ID tindakan IME yang sesuai yang ditentukan dalam class EditorInfo, seperti IME_ACTION_SEND. Contoh:

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 Anda ingin memberikan saran kepada pengguna saat mengetik, Anda dapat menggunakan subclass dari EditText yang disebut AutoCompleteTextView. Untuk menerapkan pengisian otomatis, Anda harus menentukan Adapter yang menyediakan saran teks. Ada beberapa jenis adaptor yang tersedia, tergantung dari mana data berasal, seperti dari database atau array.

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 dengan kolom teks saja:
        <?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. Contohnya, berikut adalah array nama negara yang ditentukan dalam file resource XML (res/values/strings.xml):
        <?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. Pada 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);
        

    Di sini, ArrayAdapter baru diinisialisasi untuk mengikat setiap item dalam array string countries_array ke TextView yang ada dalam tata letak simple_list_item_1 (ini adalah tata letak yang disediakan oleh Android yang menyediakan tampilan standar untuk teks dalam daftar).

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