1. 跳轉到新的頁面自動軟鍵盤顯示情況:
在配置清單文件AndroidManifest.xml文件,對Activity的windowSoftInputMode屬性進行設置。
- stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
- stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
- stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
- stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
- stateVisible:軟鍵盤通常是可見的
- stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
- adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
- adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
- adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
一般情況下,軟鍵盤的彈出都需要依托EditText獲取焦點。根據輸入控件可以控制軟鍵盤的彈出和收縮。
public static void showSoftInput(final View view) { view.postDelayed(() -> { view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus(); InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); if(imm != null) imm.showSoftInput(view, 0); }, 200); } public static boolean hideSoftInput(View view) { InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); return imm != null && imm.hideSoftInputFromWindow(view.getWindowToken(), 0); }
2. 鍵盤上的搜索,回車,確定,GO之類的設置。在EditText類型設置imeOptions屬性:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionDone|actionGo|actionNext|actionPrevious|actionNone|actionSearch|actionSend"/>
或在代碼中設置:
editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
3. 判斷是否點擊了軟鍵盤的回車,搜索之類的按鈕,可以添加為輸入控件添加TextView.OnEditorActionListener監聽,判斷點擊IME_ACTION類型,返回false則是默認系統處理,返回true則自行處理。
editText.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE){ //TODO return true; } return false; });
