Giriş yöntemi türünü belirtin

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da dokunma ve giriş işlemlerini nasıl kullanacağınızı öğrenin.

Her metin alanı, e-posta adresi, telefon numarası veya düz metin gibi belirli bir metin girişi türü bekler. Sistemin, dokunmatik klavye gibi uygun sanal giriş yöntemini göstermesi için uygulamanızdaki her metin alanı için giriş türünü belirtmeniz gerekir.

Giriş yöntemiyle kullanılabilen düğme türünün yanı sıra giriş yönteminin yazım önerileri sunup sunmadığı, yeni cümleleri büyük harfle başlatıp başlatmadığı ve satır başı düğmesini Bitti veya Sonraki gibi bir işlem düğmesiyle değiştirip değiştirmediği gibi davranışları belirtebilirsiniz. Bu sayfada, bu özelliklerin nasıl belirtileceği açıklanmaktadır.

Klavye türünü belirtme

<EditText> öğesine android:inputType özelliğini ekleyerek metin alanlarınızın giriş yöntemini her zaman bildirin.

telefon girişi
Şekil 1. phone giriş türü.

Örneğin, telefon numarası girmek için bir giriş yöntemi istiyorsanız "phone" değerini kullanın:

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
textPassword giriş türü
Şekil 2. textPassword giriş türü.

Metin alanı şifre içinse metin alanının kullanıcının girişini gizlemesi için "textPassword" değerini kullanın:

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

android:inputType özelliğiyle ilgili olarak belgelenmiş çeşitli olası değerler vardır. Giriş yöntemi görünümünü ve ek davranışları belirtmek için bu değerlerden bazılarını birleştirebilirsiniz.

Yazım önerilerini ve diğer davranışları etkinleştirme

otomatik düzeltme
Şekil 3. textAutoCorrect eklediğinizde yazım hataları otomatik olarak düzeltilir.

android:inputType özelliği, giriş yöntemi için çeşitli davranışlar belirtmenize olanak tanır. En önemlisi, metin alanınız temel metin girişi için tasarlanmışsa (ör. kısa mesaj için) "textAutoCorrect" değeriyle otomatik yazım düzeltmeyi etkinleştirin.

android:inputType özelliğini kullanarak farklı davranışları ve giriş yöntemi stillerini birleştirebilirsiniz. Örneğin, bir cümlenin ilk kelimesini büyük harfle yazan ve yazım hatalarını otomatik olarak düzelten bir metin alanı oluşturmak için aşağıdaki adımları uygulayabilirsiniz:

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

Giriş yöntemi işlemini belirtme

Çoğu sanal giriş yöntemi, alt köşede mevcut metin alanı için uygun bir kullanıcı işlemi düğmesi sağlar. Metin alanınız çok satırlı metni desteklemediği sürece (ör. android:inputType="textMultiLine") sistem, varsayılan olarak bu düğmeyi Sonraki veya Bitti işlemi için kullanır. Bu durumda işlem düğmesi satır başı olur. Ancak metin alanınız için daha uygun olabilecek başka işlemler (ör. Gönder veya Git) belirtebilirsiniz.

Klavye işlem düğmesini belirtmek için "actionSend" veya "actionSearch" gibi bir işlem değeriyle android:imeOptions özelliğini kullanın. Örneğin:

Gönder düğmesi
Şekil 4. android:imeOptions="actionSend" beyan ettiğinizde Gönder düğmesi görünür.
<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" />

Ardından, EditText öğesi için bir TextView.OnEditorActionListener tanımlayarak işlem düğmesine basma işlemlerini dinleyebilirsiniz. Dinleyicinizde, aşağıdaki örnekte gösterildiği gibi EditorInfo sınıfında tanımlanan uygun IME işlem kimliğine (ör. IME_ACTION_SEND) yanıt verin:

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

Otomatik tamamlama önerileri sunma

Kullanıcılara yazarken öneriler sunmak istiyorsanız EditText adlı sınıfın bir alt sınıfı olan AutoCompleteTextView sınıfını kullanabilirsiniz. Otomatik tamamlama özelliğini uygulamak için metin önerileri sağlayan bir Adapter belirtmeniz gerekir. Verilerin nereden geldiğine bağlı olarak (ör. veritabanı veya dizi) çeşitli bağdaştırıcılar kullanılabilir.

metin önerileri
Şekil 5. Metin önerileri içeren AutoCompleteTextView örneği.

Aşağıdaki prosedürde, AutoCompleteTextView oluşturma işlemi açıklanmaktadır. Bu işlem, ArrayAdapter kullanarak bir diziden öneriler sunar:

  1. AutoCompleteTextView öğesini düzeninize ekleyin. Yalnızca metin alanının bulunduğu bir düzeni aşağıda görebilirsiniz:
    <?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. Tüm metin önerilerini içeren diziyi tanımlayın. Örneğin, ülke adlarından oluşan bir dizi aşağıda verilmiştir:
    <?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. Activity veya Fragment içinde, önerileri sağlayan bağdaştırıcıyı belirtmek için aşağıdaki kodu kullanın:

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

    Önceki örnekte, countries_array dize dizisindeki her öğeyi simple_list_item_1 düzeninde bulunan bir TextView öğesine bağlamak için yeni bir ArrayAdapter başlatılıyor. Bu, Android tarafından sağlanan ve listedeki metinler için standart bir görünüm sunan bir düzendir.

  4. setAdapter() numarasını arayarak adaptörü AutoCompleteTextView cihazına atayın.