EditText隐藏软键盘、Enter键隐藏软键盘、点击非输入框区域隐藏软键盘


步骤一:隐藏软键盘:

在manifests文件中实现:

android:windowSoftInputMode="stateHidden|adjustResize"

在Activity点击事件中实现:

                imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

步骤二:Enter键隐藏软键盘:

    @Override    public boolean dispatchKeyEvent(KeyEvent event) {        if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {            //隐藏键盘            imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);            if (imm.isActive()) {                imm.hideSoftInputFromWindow(SearchActivity.this.getCurrentFocus().getWindowToken(), 0);            }            return true;        }        return super.dispatchKeyEvent(event);    }

步骤三:点击非输入框区域隐藏软键盘:

/**     * 判断点击按下是否在EditText上     *     * @param v     * @param event     * @return     */    private boolean isShouldHideInput(View v, MotionEvent event) {        if (v != null && (v instanceof EditText)) {            int[] leftTop = {0, 0};            //获取输入框当前的location位置            v.getLocationInWindow(leftTop);            int left = leftTop[0];            int top = leftTop[1];            int bottom = top + v.getHeight();            int right = left + v.getWidth();            if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) {                // 点击的是输入框区域,保留点击EditText的事件                return false;            } else {                return true;            }        }        return false;    }


 @Override    public boolean dispatchTouchEvent(MotionEvent ev) {        if (ev.getAction() == MotionEvent.ACTION_DOWN) {            View v = getCurrentFocus();            if (isShouldHideInput(v, ev)) {                imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                if (imm != null) {                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);                }            }            return super.dispatchTouchEvent(ev);        }        // 必不可少,否则所有的组件都不会有TouchEvent了        if (getWindow().superDispatchTouchEvent(ev)) {            return true;        }        return onTouchEvent(ev);    }




更多相关文章

  1. android studio导出apk步骤
  2. 中间凹陷的 BottomNavigationView
  3. Activity使用Dialog样式导致点击空白处自动关闭的问题
  4. 关于Android中Dialog点击屏幕外失去焦点消失的问题
  5. RecyclerView实现Item点击事件方法二
  6. Android(安卓)support Repository
  7. 如何让手机横竖屏切换不重走Activity生命周期
  8. H5-input 弹起键盘遮盖输入框(Android),键盘顶不起来输入框, ios
  9. [Android]Fragment的应用/点击替换fragment应用实例

随机推荐

  1. 【北亚数据恢复】分布式存储hbase和hive
  2. MongoDB 4.X CRUD 基本操作说明
  3. CentOS 8 EOL如何切换源?
  4. 如何加快 Node.js 应用的启动速度
  5. Linux服务器配置ulimit的常用参数介绍
  6. Springboot docker jenkins 自动化部署并
  7. PHP 中通过 getopt 解析 GNU C 风格命令
  8. Manjaro Linux 入门使用教程
  9. 素描该怎么入门?素描长方形画法教程!
  10. 学游戏原画难吗?学游戏原画设计教程!