Android隱藏軟鍵盤
阿新 • • 發佈:2018-12-09
網上好多方法說的隱藏方法,其實是隱藏/顯示方法,即,當前鍵盤顯示,呼叫一下,隱藏,在呼叫一下,又顯示了。下面提供兩種徹底隱藏的方法:
/** * 軟鍵盤顯示/隱藏 */ public void hideShowKeyboard() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); //得到InputMethodManager的例項 if (imm.isActive()) {//如果開啟 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);//關閉軟鍵盤,開啟方法相同,這個方法是切換開啟與關閉狀態的 } } /** * 隱藏軟鍵盤(只適用於Activity,不適用於Fragment) */ public void hideSoftKeyboard(Activity activity) { View view = activity.getCurrentFocus(); if (view != null) { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } /** * 隱藏軟鍵盤(可用於Activity,Fragment) */ public void hideSoftKeyboard(Context context, List<View> viewList) { if (viewList == null) return; InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); for (View v : viewList) { inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }
其中viewList 中需要放的是當前介面所有觸發軟鍵盤彈出的控制元件。 比如一個登陸介面, 有一個賬號輸入框和一個密碼輸入框, 需要隱藏鍵盤的時候, 就將兩個輸入框物件放在 viewList 中, 作為引數傳到 hideSoftKeyboard 方法中即可。
如何設定EditText預設不彈出軟鍵盤,網上好多人說,editText.clearFoucs();然而我試了,並沒卵用。
簡單有效的辦法是在EditText的父佈局中新增兩個focusable和focusableInTouchMode為true屬性,如下:
<RelativeLayout android:layout_width="480px" android:layout_height="65px" android:focusable="true" android:focusableInTouchMode="true"> <EditText android:id="@+id/et_local_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:hint="請輸入視訊名稱" android:textCursorDrawable="@null" android:textSize="23px" /> </RelativeLayout>