編寫(xiě):zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/style.html
每個(gè)文本框都對(duì)應(yīng)特定類(lèi)型的文本輸入,如Email地址,電話(huà)號(hào)碼,或者純文本。為應(yīng)用中的每一個(gè)文本框指定輸入類(lèi)型是很重要的,這樣做可以讓系統(tǒng)展示更為合適的軟輸入法(比如虛擬鍵盤(pán))。
除了輸入法可用的按鈕類(lèi)型之外,我們還應(yīng)該指定一些行為,例如,輸入法是否提供拼寫(xiě)建議,新的句子首字母大寫(xiě),和將回車(chē)按鈕替換成動(dòng)作按鈕(如 Done 或者 Next)。這節(jié)課介紹了如何添加這些屬性。
通過(guò)將 android:inputType 屬性添加到 <EditText> 節(jié)點(diǎn)中,我們可以為文本框聲明輸入法。
舉例來(lái)說(shuō),如果我們想要一個(gè)用于輸入電話(huà)號(hào)碼的輸入法,那么使用 "phone" 值:
<EditText
android:id="@+id/phone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/phone_hint"
android:inputType="phone" />
http://wiki.jikexueyuan.com/project/android-training-geek/images/edittext-phone.png" alt="edittext-phone" title="Figure 1. The phone input type." />
Figure 1. phone 輸入類(lèi)型
或者如果文本框用于輸入密碼,那么使用 "textPassword" 值來(lái)隱藏用戶(hù)的輸入:
<EditText
android:id="@+id/password"
android:hint="@string/password_hint"
android:inputType="textPassword"
... />
http://wiki.jikexueyuan.com/project/android-training-geek/images/ime_password.png" alt="ime_password" />
Figure 2. textPassword 輸入類(lèi)型
有幾種可供選擇的值在 android:inputType 記錄在屬性中,一些值可以組合起來(lái)實(shí)現(xiàn)特定的輸入法外觀和附加的行為。
android:inputType 屬性允許我們?yōu)檩斎敕ㄖ付ú煌男袨?。最為重要的是,如果文本框用于基本的文本輸入(如短信息),那么我們?yīng)該使用 "textAutoCorrect" 值來(lái)開(kāi)啟自動(dòng)拼寫(xiě)修正。
http://wiki.jikexueyuan.com/project/android-training-geek/images/ime_autocorrect.png" alt="ime_autocorrect" />
Figure 3. 添加 textAutoCorrect 為拼寫(xiě)錯(cuò)誤提供自動(dòng)修正
我們可以將不同的行為和輸入法形式組合到 android:inputType 這個(gè)屬性。如:如何創(chuàng)建一個(gè)文本框,里面的句子首字母大寫(xiě)并開(kāi)啟拼寫(xiě)修正:
<EditText
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType=
"textCapSentences|textAutoCorrect"
... />
多數(shù)的軟鍵盤(pán)會(huì)在底部角落里為用戶(hù)提供一個(gè)合適的動(dòng)作按鈕來(lái)觸發(fā)當(dāng)前文本框的操作。默認(rèn)情況下,系統(tǒng)使用 Next 或者 Done,除非我們的文本框允許多行文本(如android:inputType="textMultiLine"),這種情況下,動(dòng)作按鈕就是回車(chē)換行。然而,我們可以指定一些更適合我們文本框的額外動(dòng)作,比如 Send 和 Go。
http://wiki.jikexueyuan.com/project/android-training-geek/images/edittext-actionsend.png" alt="edittext-actionsend" />
Figure 4. 當(dāng)我們聲明了 android:imeOptions="actionSend",會(huì)出現(xiàn) Send 按鈕。
使用android:imeOptions 屬性,并設(shè)置一個(gè)動(dòng)作值(如 "actionSend" 或 "actionSearch"),來(lái)指定鍵盤(pán)的動(dòng)作按鈕。如:
<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" />
然后,我們可以通過(guò)為 EditText 節(jié)點(diǎn)定義 TextView.OnEditorActionListener 來(lái)監(jiān)聽(tīng)動(dòng)作按鈕的按壓。在監(jiān)聽(tīng)器中,響應(yīng) EditorInfo 類(lèi)中定義的適合的 IME action ID,如 IME_ACTION_SEND 。例如:
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;
}
});