Android開發中利用imeOptions屬性將鍵盤迴車鍵改成搜尋等功能鍵【提高使用者輸入體驗】

王世暉發表於2016-05-09

Android中鍵盤輸入是使用者輸入互動的最常用最直接的手段,關於鍵盤輸入,有幾點可以提高使用者使用體驗。

第一:彈出鍵盤整體頁面上移,使鍵盤不遮擋控制元件,需要在AndroidManifest設定對應Activity的windowSoftInputMode屬性

stateVisible

    設定為這個屬性,可以將軟鍵盤召喚出來,即使在介面上沒有輸入框的情況下也可以強制召喚出來

adjustResize

    這個屬性表示Activity的主視窗總是會被調整大小,從而保證軟鍵盤顯示空間。

效果如下圖所示:


<activity
    android:name=".activity.LoginActivity"
    android:windowSoftInputMode="stateVisible|adjustResize"
    android:label="@string/title_activity_login"
    android:screenOrientation="portrait"></activity>
第二:頁面中有多個輸入控制元件的時候,輸入控制元件焦點的切換需要使用者點選控制元件切換的話,使用體驗不是很好,可以將鍵盤的Enter鍵改成“下一步”按鈕,直接將游標焦點切換到下一個輸入控制元件。在佈局檔案中設定

android:imeOptions="actionNext"
android:singleLine="true"
即可

如下圖所示


第三:提交表單時,可以點選提交按鈕提交,也可以最後一個EditText獲取焦點時設定鍵盤的Enter鍵為傳送鍵,這樣點選了鍵盤的Enter鍵就自動處理了提交表單的邏輯。

設定也很簡單,輸入控制元件佈局檔案新增兩個屬性如下:

android:imeOptions="actionSend"
android:singleLine="true"
在Activity中檢測到鍵盤迴車鍵是否按下,從而處理響應的邏輯

mPassWord.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_ENTER) {
            ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
                    .hideSoftInputFromWindow(LoginActivity.this.getCurrentFocus()
                            .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            if(TextUtil.isEmpty(mPassWord.getText().toString())){
                ToastUtil.getInstance().show("請輸入密碼");
            }else{
                login(mUserName.getText().toString(),mPassWord.getText().toString());
            }
        }
        return false;
    }
});
如下圖所示:


第四:將Enter鍵改成搜尋按鍵,佈局檔案EditText新增如下兩個屬性:

android:singleLine="true"
android:imeOptions="actionSearch"
Enter鍵的點選檢測和上邊的一樣

示例圖如下:



相關文章