Android關於鍵盤相關知識

weixin_34138377發表於2016-10-20

彈出鍵盤和收起鍵盤

彈出鍵盤

public void openSoftKeyboard(View view){
 if(view.requestFocus()){
 InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
 }
}

關閉鍵盤

public void hideSoftKeyboard(View view){
 InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

監聽鍵盤的Enter鍵

//setImeOptions()也可在xml佈局檔案中通過android:imeOptions="actionDone"進行設定
mEditText.setImeOptions(EditorInfo.IME_ACTION_SEND);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        //新增點選Enter鍵的邏輯
        return false;
    }
});

監聽鍵盤彈出和收起以及鍵盤高度

最近開發總結(關於鍵盤監聽,單例模式,popupWindow)

windowSoftInputMode相關配置

可取值與相應屬性
1."stateUnspecified": 不指定軟鍵盤的狀態,由系統將選擇一個合適 的狀態或依賴於Activity的主題的設定
2."stateUnchanged": 當該activity顯示時,軟鍵盤將一直保持在上個activity中的狀態(上個Activity顯示軟鍵盤,當前activity也顯示)
3."stateHidden": 當activity顯示時,軟鍵盤總是被隱藏
4."stateAlwaysHidden": 當該Activity主視窗獲取焦點時,軟鍵盤也總是被隱藏的
5."stateVisible": 軟鍵盤通常是可見的
6."stateAlwaysVisible": 當該activity顯示時,軟鍵盤總是顯示的狀態
7."adjustUnspecified": 預設設定,由系統自行決定是隱藏還是顯示
8."adjustResize":該Activity總是調整螢幕的大小以便留出軟鍵盤的空間
9."adjustPan": 當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋使使用者能總是看到輸入內容的部分