zoukankan      html  css  js  c++  java
  • android 点击空白出隐藏软键盘

    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);
    }
    }
    ......
    }

  • 相关阅读:
    VS2010制作网站自定义安装程序 转
    SQL Express几个版本的区别
    WebGIS(PostgreSQL+GeoServer+OpenLayers)之二 GeoServer安装与数据配置
    CentOS设置ipv4和ipv6
    Linux下Vim的启动与退出
    Linux字符界面基本操作
    CentOS字符界面与图形界面的切换
    mysql显示SQL语句执行时间
    将shp文件导入到mysql数据库中
    MySQL导入sql 文件的5大步骤
  • 原文地址:https://www.cnblogs.com/zmc/p/4370800.html
Copyright © 2011-2022 走看看