Android 点击editview以外位置实现隐藏输入法

Android 点击editview以外位置实现隐藏输入法

实现代码:

@Override
  public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
      View v = getActivity().getCurrentFocus();
      if (isShouldHideInput(v, ev)) { 

        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
          imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
      }
      return getActivity().dispatchTouchEvent(ev);
    }
    // 必不可少,否则所有的组件都不会有TouchEvent了
    if (getActivity().getWindow().superDispatchTouchEvent(ev)) {
      return true;
    }
    return getActivity().onTouchEvent(ev);
  } 

  public 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;
  } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android控件之EditView常用属性及应用方法

    EditView类继承自TextView类,EditView与TextView最大的不同就是用户可以对EditView控件进行编辑,同时还可以为EditView控件设置监听器,用来判断用户的输入是否合法. 以下为EditView常用属性及对应方法说明

  • Android基础控件(EditView、SeekBar等)的使用方法

    android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView的使用方法.在介绍各种控件之前,先简单介绍android UI控件最基本的几种属性: id: id是控件唯一标识符,可通过**findViewById(R.id.*)**操作控件. layout_width:控件宽度,可设置为match_parent(充满父布局,即让父布局决定当前控件的宽度).wrap_c

  • Android 点击editview以外位置实现隐藏输入法

    Android 点击editview以外位置实现隐藏输入法 实现代码: @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getActivity().getCurrentFocus(); if (isShouldHideInput(v, ev)) { InputMethodManager imm = (Inp

  • Android点击EditText文本框之外任何地方隐藏键盘的解决办法

    1,实现方法一: 通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/traceroute_rootview" android:layout_width="fill_parent" android:

  • 点击页面任何位置隐藏div的实现方法

    实例如下: <include file="Public:header" /> <style type="text/css"> table{width:100%;margin: 0;} </style> <script type='text/javascript' src="/{:APP_PATH}/Public/js/unslider.min.js"></script> <scri

  • Android 点击屏幕空白处收起输入法软键盘(手动打开)

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击屏幕空白区域即可实现收起输入法软键盘功能.下面给大家介绍下实现方法. 1.//隐藏软键盘   在Java文件: InputMethodManager m = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); m .

  • 基于JavaScript实现点击页面任何位置返回

    废话不多说了,直接上关键代码了. <include file="Public:header" /> <style type="text/css"> table{width:100%;margin: 0;} </style> <script type='text/javascript' src="/{:APP_PATH}/Public/js/unslider.min.js"></script&g

  • Android ListView中headerview的动态显示和隐藏的实现方法

    Android ListView中headerview的动态显示和隐藏的实现方法 1.动态设置headerview的方法 动态设置headerview有两个思路. 方法一 将header的布局写在list item的布局文件中,在adapter中通过判断position的值是否为0动态控制其显示或隐藏. 代码示例: item.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x

  • android 点击EditText始终不弹出软件键盘实现代码

    android  点击EditText始终不弹出软件键盘 场景描述:正常情况下,当点击EditText时,软键盘会弹出来.现在的要求是当点击EditText时,弹日期选择对话框,选择的结果显示在EditText上.若不处理,当点击EditText时,软键盘和对话框都会弹出,显然用户会感觉到不爽. 解决办法,当点击EditText时: 1.存储当前的输入类型 2.设置输入类型为InputType.TYPE_NULL,禁止手机软键盘 3.还原原来的输入类型,因为这次操作完,还要允许用户修改. 4.弹

  • Android 更改 Toast 的默认位置方法

    Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适.比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没有注意到.还有可能是默认位置的Toast被用户的手挡住了.实践中感觉将Toast显示在屏幕的中部或中上部会比较好.如何修改Toast的默认位置呢?下面做一个简单的例子来演示一下. 先上截图: 布局文件activity_toast.xml代码如下: <?xml version="1.0"

  • Android开发 -- 控件的显示与隐藏 setVisibility View.VISIBLE View.INVISIBLE View.GONE

    在Android中setVisibility作为显示和隐藏的属性,一般我们呢都是在代码中进行操作,例如: [code]<span style="white-space:pre">  </span>this.mItem.setVisibility(View.VISIBLE);[code] 其能够被设置的值有三个,分别是: View.VISIBLE    可见 View.INVISIBLE    不可见,但是它原来占用的位子还在 View.GONE  不可见,并且不

  • Android Studio实现标题栏和状态栏的隐藏

    Android Studio在实现隐藏标题栏和状态栏上和Eclipse是完全不一样的. 在Eclipse上隐藏标题栏和状态栏的代码如下: 方法一: requestWindowFeature(Window.FEATURE_NO_TITLE); 方法二:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 今天在做闪屏页开发时,想把标题

随机推荐