Android 指定輸入法類型

2018-08-02 18:22 更新

編寫:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/style.html

每個(gè)文本框都對(duì)應(yīng)特定類型的文本輸入,如Email地址,電話號(hào)碼,或者純文本。為應(yīng)用中的每一個(gè)文本框指定輸入類型是很重要的,這樣做可以讓系統(tǒng)展示更為合適的軟輸入法(比如虛擬鍵盤)。

除了輸入法可用的按鈕類型之外,我們還應(yīng)該指定一些行為,例如,輸入法是否提供拼寫建議,新的句子首字母大寫,和將回車按鈕替換成動(dòng)作按鈕(如 Done 或者 Next)。這節(jié)課介紹了如何添加這些屬性。

指定鍵盤類型

通過(guò)將 android:inputType 屬性添加到 <EditText> 節(jié)點(diǎn)中,我們可以為文本框聲明輸入法。

舉例來(lái)說(shuō),如果我們想要一個(gè)用于輸入電話號(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" />

edittext-phone

Figure 1. phone 輸入類型

或者如果文本框用于輸入密碼,那么使用 "textPassword" 值來(lái)隱藏用戶的輸入:

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

ime_password

Figure 2. textPassword 輸入類型

有幾種可供選擇的值在 android:inputType 記錄在屬性中,一些值可以組合起來(lái)實(shí)現(xiàn)特定的輸入法外觀和附加的行為。

開(kāi)啟拼寫建議和其它行為

android:inputType 屬性允許我們?yōu)檩斎敕ㄖ付ú煌男袨椤W顬橹匾氖?,如果文本框用于基本的文本輸入(如短信息),那么我們?yīng)該使用 "textAutoCorrect" 值來(lái)開(kāi)啟自動(dòng)拼寫修正。

ime_autocorrect

Figure 3. 添加 textAutoCorrect 為拼寫錯(cuò)誤提供自動(dòng)修正

我們可以將不同的行為和輸入法形式組合到 android:inputType 這個(gè)屬性。如:如何創(chuàng)建一個(gè)文本框,里面的句子首字母大寫并開(kāi)啟拼寫修正:

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

指定輸入法的行為

多數(shù)的軟鍵盤會(huì)在底部角落里為用戶提供一個(gè)合適的動(dòng)作按鈕來(lái)觸發(fā)當(dāng)前文本框的操作。默認(rèn)情況下,系統(tǒng)使用 Next 或者 Done,除非我們的文本框允許多行文本(如android:inputType="textMultiLine"),這種情況下,動(dòng)作按鈕就是回車換行。然而,我們可以指定一些更適合我們文本框的額外動(dòng)作,比如 Send 和 Go。

edittext-actionsend

Figure 4. 當(dāng)我們聲明了 android:imeOptions="actionSend",會(huì)出現(xiàn) Send 按鈕。

使用android:imeOptions 屬性,并設(shè)置一個(gè)動(dòng)作值(如 "actionSend" 或 "actionSearch"),來(lái)指定鍵盤的動(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 類中定義的適合的 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;
    }
});


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)