1. 程式人生 > >Android隱藏軟鍵盤

Android隱藏軟鍵盤

網上好多方法說的隱藏方法,其實是隱藏/顯示方法,即,當前鍵盤顯示,呼叫一下,隱藏,在呼叫一下,又顯示了。下面提供兩種徹底隱藏的方法:


    /**
     * 軟鍵盤顯示/隱藏
     */
    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>