很多時候,我們在使用應用時,會出現IME軟鍵盤彈出的問題,通常情況下,我們預設會使使用者點擊返回鍵或者下一步對軟鍵盤進行隱藏。為了更好的體驗,我們可以實現當使用者使用完畢軟鍵盤時。點擊螢幕空白地區即可實現收合IME軟鍵盤功能。下面給大家介紹下實現方法。
1、//隱藏軟鍵盤
在Java檔案:
InputMethodManager m = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); m .hideSoftInputFromWindow(xxxx.getWindowToken(), 0);//比如EditView
或者是:
在Manifest.xml的activity中寫上:Android:windowSoftInputMode="stateHidden表示開啟activity隱藏IME。
2、//顯示軟鍵盤,控制項ID可以是EditText,TextView
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控制項ID, 0);
3、不自動彈出鍵盤:
最理想的實現方式:
public class HomeActivity extends Activity { ...... @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { // 獲得當前得到焦點的View,一般情況下就是EditText(特殊情況就是軌跡求或者實體案例會移動焦點) View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { hideSoftInput(v.getWindowToken()); } } return super.dispatchTouchEvent(ev); } /** * 根據EditText所在座標和使用者點擊的座標相對比,來判斷是否隱藏鍵盤,因為當使用者點擊EditText時沒必要隱藏 * * @param v * @param event * @return */ private boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] l = { 0, 0 }; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 點擊EditText的事件,忽略它。 return false; } else { return true; } } // 如果焦點不是EditText則忽略,這個發生在視圖剛繪製完,第一個焦點不在EditView上,和使用者用軌跡球選擇其他的焦點 return false; } /** * 多種隱藏軟體盤方法的其中一種 * * @param token */ private void hideSoftInput(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } } ...... }
以上所述是小編給大家介紹的Android 點擊螢幕空白處收合IME軟鍵盤(手動開啟),希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!