13 Şubat 2018 Salı

Android Dersleri 16 - Specifying the Input Method Type


16 - Specifying the Input Method Type

https://developer.android.com/training/keyboard-input/style.html#Spelling
       Every text field expects a certain type of text input, such as an email address, phone number, or just plain text. So it's important that you specify the input type for each text field in your app so the system displays the appropriate soft input method (such as an on-screen keyboard). ( Herbir text alanı, belirli type'da bir input girilmesini bekler. Örneğin, bazı text alanları e-mail adresi girilmesini bekler, bazı text alanları telefon numarası(rakam) girilmesini bekler, bazı text alanları şifre girilmesini bekler girilen karakterleri göstermez, bazı text alanları ise plain text girilmesini bekler. Dolayısıyla uygulamamızdaki herbir text field için, girilecek input type'ını belirtmemiz çok önemlidir, bu sayede, kullanıcıya uygun klavye ekranını gösteririz ekranda. )
        Beyond the type of buttons available with an input method, you should specify behaviors such as whether the input method provides spelling suggestions, capitalizes new sentences, and replaces the carriage return button with an action button such as a Done or Next. This lesson shows how to specify these characteristics. ( text alanı girilebileck input için gösterilecek klavyeye ek olarak başka davranışlar da tanımlamalıyız. Örneğin, bir input girerken düzeltme ve tamamlama önerisi, ayrıca sağ alttaki butonun type'ını da belirleyebiliriz, "done", "next", "send" butonu yapabiliriz sağ alttaki butonu, bunu layout xml'deki edittext element'e android:imeOptions="actionSend"  attribute'ünü ekleyerek yapabiliriz. )

Specify the Keyboard Type

        You should always declare the input method for your text fields by adding the android:inputType attribute to the <EditText> element. ( EditText element'e android:inputType attribute'ünü ekleyerek, EditText alanına girilebilecek input method'unu belirleyebiliriz.)
        For example, if you'd like an input method for entering a phone number, use the "phone" value: ( Telefon numarası girilmesini istiyorsak, android:inputType="phone" attribute'ünü kullanmalıyız.)
<EditText

    android:id="@+id/phone"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:hint="@string/phone_hint"

    android:inputType="phone" />
https://developer.android.com/images/ui/edittext-phone.png
Figure 1. The phone input type.
----
        Or if the text field is for a password, use the "textPassword" value so the text field conceals the user's input: ( EditText alanına şifre girilmesini istiyorsak, android:inputType="textPassword" attribute'ünü kullanmalıyız.)
<EditText

    android:id="@+id/password"

    android:hint="@string/password_hint"

    android:inputType="textPassword"

    ... />
https://developer.android.com/images/training/input/ime_password.png
Figure 2. The textPassword input type.
---
        There are several possible values documented with the android:inputType attribute and some of the values can be combined to specify the input method appearance and additional behaviors. (android:inputType attribute'üne assign edebileceğimiz çok sayıda değer vardır. Bunların tümüne bakabilirsiniz isterseniz. inputType attribute'Ünü kullanarak input method'unu da değiştirebiliriz, ekstra davranışlar da sağlayabiliriz.)
        android:hint="@string/password_hint" attribute'ü, text alanı boşken bir yazı gösterilmesini sağlar. Birşeyler yazınca bu yazı kaybolur.

Enable Spelling Suggestions and Other Behaviors

        The android:inputType attribute allows you to specify various behaviors for the input method. Most importantly, if your text field is intended for basic text input (such as for a text message), you should enable auto spelling correction with the "textAutoCorrect" value. (inputType attribute'Ünü kullanarak çeşitli davranışlar da sağlayabiliriz. Bunlardan en önemlisi, text alanımıza text message girilecekse, otomatik gramer düzelticiyi aktifleştirebiliriz android:inputType="textAutoCorrect" diyerek. )
https://developer.android.com/images/training/input/ime_autocorrect.png
Figure 3. Adding textAutoCorrect provides auto-correction for misspellings.
-----
        You can combine different behaviors and input method styles with the android:inputType attribute. For example, here's how to create a text field that capitalizes the first word of a sentence and also auto-corrects misspellings:( inputtype attribute'ü ile davranışları ve method'ları birlikte söyleyebiliriz. Örneğin aşağıdaki örnekte, hem girilen text'deki her cümlenin baş harfinin büyük olması, hem de otomatik gramer düzenleyicisi özelliği sağlanmıştır EditText alanı için. )
<EditText

    android:id="@+id/message"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:inputType = "textCapSentences | textAutoCorrect"

    ... />

Specify the Input Method Action

        Most soft input methods provide a user action button in the bottom corner that's appropriate for the current text field. By default, the system uses this button for either a Next or Done action unless your text field allows multi-line text (such as with android:inputType="textMultiLine"), in which case the action button is a carriage return. However, you can specify additional actions that might be more appropriate for your text field, such as Send or Go. ( Ekranda çıkan klavyenin en sağ altındaki user action butonunun type'ının ne olacağını belirleyebiliriz. Default olarak bu buton Next veya Done action'ı için kullanılır. Ama textfield'ımız, multiline text'e izin veriyorsa, bu buton new line karakteri için kullanılır. )
        To specify the keyboard action button, use the android:imeOptions attribute with an action value such as "actionSend" or "actionSearch". For example:( Bu butonun hangi action için kullanılacağını android:imeOptions attribute'ünü kullanarak belirtebiliriz. Bu şekilde actionNext, actionDone, actionSend, actionGo,actionSearch gibi bir action belirtmek mümkündür.)
Örnek :
<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" />
https://developer.android.com/images/ui/edittext-actionsend.png
Figure 4. The Send button appears when you declare android:imeOptions="actionSend" as in the above example :
---
        You can then listen for presses on the action button by defining a TextView.OnEditorActionListener for the EditText element. In your listener, respond to the appropriate IME action ID defined in the EditorInfo class, such as IME_ACTION_SEND. For example: ( Sonra TextView object'in OnEditorActionListener() method'unu çağırarak  bu butonu dinleyebilriz. Unutma ki EditText, TextView'in bir subclass'ıdır. layout xml'de android:imeOptions="actionSend" attribute'ünü belirttiğimiz için listener method'da actionId == EditorInfo.IME_ACTION_SEND diyerek butona tıklanılıp tıklanılmadığını check ederiz .     )
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;

    }

});

Provide Auto-complete Suggestions

        If you want to provide suggestions to users as they type, you can use a subclass of EditText called AutoCompleteTextView. To implement auto-complete, you must specify an Adapter that provides the text suggestions. There are several kinds of adapters available, depending on where the data is coming from, such as from a database or an array. ( Kullanıcı input girerken kullanıcıya suggestion yapmak istiyoruz diyelim. Aşağıdaki resimde buna bir örnek gösterilmiştir. Bunu implement etmek için, EditText'in subclass'ı olan AutoCompleteTextView class'ını kullanabiliriz. Ayrıca bir adapter kullanmalıyız. Bunun için verinin nereden geldiğine göre farklı adapter çeşitlerini kullanabiliriz. )
https://developer.android.com/images/ui/edittext-autocomplete.png
Figure 5. Example of AutoCompleteTextView with text suggestions. (Text suggestion'ı implement ettiğimiz bir AutoCompleteTextView  alanı bu şekilde gözükür.)
        The following steps describes how to set up an  AutoCompleteTextView that provides suggestions from an array, using ArrayAdapter: ( ArrayAdapter kullanarak bir array'den aldığı verileri AutoCompleteTextView alanında suggestion'larda kullanırız. )
1.   Add the AutoCompleteTextView to your layout. Here's a layout with only the text field: ( Layout dosyanıza AutoCompleteTextView element'i koyun. )
<?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.   Define the array that contains all text suggestions. For example, here's an array of country names that's defined in an XML resource file (res/values/strings.xml): ( Suggest edilecek kelimeleri içeren bir array tanımlayalım. Bu örnekte ülke isimlerini içeren bir array tanımlayalım XML resource dosyasında. )
<?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.   In your Activity or Fragment, use the following code to specify the adapter that supplies the suggestions: ( Activity veya Fragment class'ınızda, suggestion'ları sağlayacak bir adapter object yaratalım ve bu adapter sayesinde AutoCompleteTextView ile suggestion source'u olan array'i birbirine bağlamış oluruz. )
// 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);
   Here, a new ArrayAdapter is initialized to bind each item in the countries_array string array to a TextView that exists in the simple_list_item_1layout (this is a layout provided by Android that provides a standard appearance for text in a list). ( Yukarıdaki kodu inceleyelim. findViewById() method'unu çağırarak AutoCompleteTextView view object'i elde ederiz:
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
   Sonra array object'i elde ederiz:
getResources().getStringArray(R.array.countries_array);
        Sonra bir arrayadapter object yaratalım. arrayadapter object'in 2.parametresi olan simple_list_item_1 row layout'dur, suggestion'da gösterilen listedeki satırların layout'u belirlenir bu şekilde. 3.parametresi ise string array'dir. countries array'inden bir eleman okunur, simple_list_item_1 row layout'una bu eleman yüklenir artık bir satır hazırdır :
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);   )
4.   Assign the adapter to the AutoCompleteTextView by calling setAdapter(). ( Sonra AutoCompleteTextView object'in setAdapter method'u çağırılarak view object ve aray birbirine bağlanmış olur.  )

Hiç yorum yok:

Yorum Gönder