点击非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之外的任何地方或者点击屏幕空白区域时,能够自动隐藏软键盘,以提供更流畅的操作流程。标题和描述所提到的,就是这样一个功能的实现方法。 在Android中,软键盘的显示与...
在移动应用开发中,经常会遇到这样一个问题:当用户在界面上点击一个输入框(EditText)时,软键盘弹出后会遮挡该输入框,导致用户无法清晰地看到自己正在输入的内容,极大地影响了用户体验。本文将详细介绍如何通过...
android edittext不弹出软键盘三种方法“: 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: android:label="@string/app_name" ...
- 隐藏软键盘:同样使用`InputMethodManager`,但调用`hideSoftInputFromWindow()`方法,如`imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);` 2. **EditText与软键盘交互**: - 当用户点击EditText...
例如,提供一个`showSoftInput(View view)`方法用于显示软键盘,和一个`hideSoftInput(View view)`方法用于隐藏软键盘。 5. **自定义交互逻辑** 在某些复杂的场景下,可能需要自定义软键盘的交互逻辑,比如在用户...
如果`adjustPan`效果不理想,或者你需要更复杂的控制,例如点击屏幕其他区域隐藏软键盘,可以自定义事件监听。首先,为根布局设置点击事件: ```java rootLayout.setOnClickListener(new View.OnClickListener() { ...
4. **监听焦点变化**:为EditText添加OnFocusChangeListener,当EditText获取焦点时,隐藏软键盘。 ```java editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void ...
本文将详细讲解如何实现"触摸除输入框以外的其它区域自动隐藏软键盘"这一功能。 首先,我们需要了解Android系统的输入法管理机制。在Android中,软键盘的显示与隐藏是由InputMethodManager这个系统服务控制的。...
在上面的代码中,我们使用递归遍历控件树,设置所有非 EditText 控件的 onTouch 事件监听器,以便在点击这些控件时隐藏软键盘。 5. 在 Activity 中调用 setupUI 方法 在 Activity 中,我们可以在 onCreate 方法中...
在Android应用开发中,EditText控件是用户输入文本的常用组件,而软键盘则是与之配合,供用户输入文字的虚拟键盘。然而,在某些场景下,我们可能希望用户在完成输入后,通过点击屏幕空白区域就能自动隐藏软键盘,以...
在Android开发中,全屏模式下遇到的一个常见问题是当用户点击EditText输入时,弹出的软键盘会遮挡住部分或全部界面,导致用户无法看到正在编辑的内容。为了解决这个问题,我们可以采用一些策略来调整布局,确保软...
3. **隐藏软键盘**: 软键盘的隐藏通常通过`InputMethodManager`实现。在`onFocusChange()`方法中,获取到`InputMethodManager`实例,然后调用`hideSoftInputFromWindow()`方法,传入EditText的窗口令牌和0作为参数...
`adjustResize`会使Activity内容区域重新调整大小以适应软键盘,而`adjustPan`则会将Dialog向上推移,以便EditText仍然可见。 2. 对于Dialog,由于它不是Activity,我们不能直接在Manifest中设置`...
但是,在某些情况下,我们可能不希望 EditText 自动弹出软键盘,例如在一些特定的场景下,我们需要隐藏软键盘以便更好的用户体验。那么,如何禁止 EditText 自动弹出软键盘呢?下面我们将为大家介绍几种方法。 方法...
如果希望在用户点击其他地方时隐藏软键盘,可以监听`OnTouchEvent`并在用户点击屏幕其他位置时调用`InputMethodManager`的`hideSoftInputFromWindow()`方法: ```java InputMethodManager imm = ...
当检测到用户在非输入控件区域点击时,调用隐藏软键盘的方法。例如: ```java @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { ...
在本示例中,我们使用 isOpenKeyboard 变量来记录软键盘的状态,并在需要时打开或隐藏软键盘。 知识点5:布局文件的使用 布局文件是 Android 中一种常用的 UI 组件,我们可以使用布局文件来定义界面布局。在本示例...
当用户点击EditText输入时,系统会自动弹出软键盘。这会影响到Activity的根布局(通常是一个LinearLayout或RelativeLayout),因为键盘的出现占据了屏幕的一部分,导致布局向上移动。然而,背景不动意味着我们希望...
在Android开发中,EditText是用于用户输入文本的基本控件,通常会伴随着系统默认的软键盘弹出,以便用户输入文字。然而,在某些特定场景下,我们可能需要自定义键盘,而不是使用系统的软键盘,比如游戏界面、数字...
接下来,要实现在点击非软键盘区域时隐藏软键盘,你需要监听整个视图的触摸事件。可以为根布局设置一个`OnTouchListener`,当检测到点击事件且点击位置不在EditView上时,调用`hideSoftInputFromWindow()`方法隐藏软...