snackbar比toast好看多了,因此新的app我把全部的toast都替換成了snackbar。android
關於關閉鍵盤,android沒有直接提供給咱們方法提供,能夠使用以下方法api
/** * 關閉鍵盤 */ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) public static void disappearKeybaroad(Activity context) { InputMethodManager imm = (InputMethodManager) context.getSystemService(INPUT_METHOD_SERVICE); if (isSoftShowing(context)) {//先判斷鍵盤是不是開啓狀態,是則關閉 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); } } /** * 判斷鍵盤是否在顯示 */ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) public static boolean isSoftShowing(Activity context) { //獲取當前屏幕內容的高度 int screenHeight = context.getWindow().getDecorView().getHeight(); //獲取View可見區域的bottom Rect rect = new Rect(); context.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); return screenHeight - rect.bottom - getSoftButtonsBarHeight(context) != 0; } /** * 底部虛擬按鍵欄的高度 * * @return */ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) private static int getSoftButtonsBarHeight(Activity activity) { DisplayMetrics metrics = new DisplayMetrics(); //這個方法獲取可能不是真實屏幕的高度 activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableHeight = metrics.heightPixels; //獲取當前屏幕的真實高度 activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; if (realHeight > usableHeight) { return realHeight - usableHeight; } else { return 0; } }
關於這樣的作法相對於關閉鍵盤要簡單的多,只須要在manifests中爲對應的activity加上這句配置便可:app
這條配置的主要做用就是讓鍵盤不要擋住咱們輸入的內容,對應的activity有了以上配置就能夠實現上述效果了O(∩_∩)Oide