点击非EditText 则隐藏软键盘,手机有物理键则方便,但在平板每次隐藏软键盘都需要按左下角按钮,用户体验非常不好。
下面方法可以实现,用户在软键盘出现的时候,点击非EditText任一处则隐藏软键盘。
/** 点击空白隐藏软键盘 */
@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);
}
}
把以上三个方法放到Activity里面就可以了。
分享到:
相关推荐
点击空白区域隐藏软键盘,无需点击返回等。提高了用户体验以及操作习惯。
将编辑框EditText置于系统软键盘之上小例子,点击编辑框以外的界面可以隐藏软键盘
点击空白处隐藏EditText软键盘
Android软键盘手动显示、隐藏、布局上移和EditText上移Demo
主要介绍了Android编程实现点击EditText之外的控件隐藏软键盘功能,涉及Android控件的功能、属性及相关操作技巧,需要的朋友可以参考下
>有一个很常见的需求,就是页面中软键盘打开时,希望能点击屏幕其他的任何位置,就能把软键盘给隐藏掉. >比如登录, 注册之类的常见页面. >在实际开发中,很多大佬通过其他控件的点击事件,在onclick方法中调用软键盘的...
本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。分享给大家供大家参考,具体如下: 在Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。 EditText控件实现了点击打开软...
3种方法实现软键盘监听的,种有一款适合你
android 软键盘隐藏 inputmethod 控制 edittext Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。 那么,弹出软键盘后必然会造成原有布局高度的减少,...
该例子主要是介绍了自定义继承自EditText的类,实现了拖动效果,其中较为重要的步骤还是解决了,拖动时隐藏软键盘,点击时弹起软键盘,由于EditText控件的原因要解决该问题还是需要花点时间的,本人通过一上午的时间...
软键盘弹出之后,计算软键盘的高度,将自定义的View设置于软键盘之上...代码重点计算了如何让软键盘显示与隐藏,并且,还解决了如何点击软键盘与自定义View 之外的区域,让软键盘隐藏而不会与其他控件的点击事件冲突。
Android软键盘遮挡问题解决demo ...在完成这个文本框的输入后,想要继续下面的操作,需要先隐藏软键盘。这会影响用户操作的流畅感,所以需要解决。在尝试了网上的几种处理方法后,最终选择了一种比较满意的方式。
项目中需要开发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘。但是Dialog不会消失。示例如下: 二、实现方法: 发布需求时,我个人曾想过直接通过new的方式直接创建Dialog,...
1、重写dispatchTouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘 @Override public boolean dispatchTouchEvent(MotionEvent ev) { //Finger touch screen event if (ev.getAction() == MotionEvent....
另外在此例子中还有一个小问题,在点击其他控件(非EditText)时自动隐藏软键盘 目前我的办法是手动调用隐藏软键盘的函数,如果控件多时,会相当繁琐 如果有谁知道这个问题的好的处理方法,请不吝赐教,留言或QQ均...
隐藏软键盘一直是我头痛的事情,没有找到一种真正能隐藏的方法。点击EditText的时候总是弹出软键盘。—–杯具 杯具(一): InputMethodManager im =(InputMethodManager) mEdit getContext() .getSystemService...
Android中软键盘的使用是非常多的,下面为软键盘常用的设置; 1、横屏时,点击输入框出现全键盘解决方案: 在EditText、searchview等控件中加 android:imeOptions=flagNoExtractUi 2、竖屏时,安卓会出现半屏。 ...