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" />
----
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" ... />
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.
)
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" />
---
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. )
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_1
layout (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