`
大头K
  • 浏览: 185613 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

点击非EditText 则隐藏软键盘

阅读更多
点击非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里面就可以了。
分享到:
评论
1 楼 flyingsir_zw 2014-04-02  
very good.

相关推荐

    安卓点击空白区域和点击Editext以外的地方隐藏软键盘

    在某些场景下,我们希望用户在点击EditText之外的任何地方或者点击屏幕空白区域时,能够自动隐藏软键盘,以提供更流畅的操作流程。标题和描述所提到的,就是这样一个功能的实现方法。 在Android中,软键盘的显示与...

    软键盘挡住EditText完美解决方案

    在移动应用开发中,经常会遇到这样一个问题:当用户在界面上点击一个输入框(EditText)时,软键盘弹出后会遮挡该输入框,导致用户无法清晰地看到自己正在输入的内容,极大地影响了用户体验。本文将详细介绍如何通过...

    点击空白区域隐藏软键盘

    标题"点击空白区域隐藏软键盘"所描述的技术解决方案就是针对这一需求而设计的。这种功能使得用户在不需要点击返回键或者特定关闭键盘的按钮时,只需点击屏幕空白区域,就能自动收起软键盘,从而提升用户体验和操作...

    Android软键盘手动显示、隐藏、布局上移和EditText上移Demo

    - 隐藏软键盘:同样使用`InputMethodManager`,但调用`hideSoftInputFromWindow()`方法,如`imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);` 2. **EditText与软键盘交互**: - 当用户点击EditText...

    Android 实现软键盘与EditText的交互.zip

    例如,提供一个`showSoftInput(View view)`方法用于显示软键盘,和一个`hideSoftInput(View view)`方法用于隐藏软键盘。 5. **自定义交互逻辑** 在某些复杂的场景下,可能需要自定义软键盘的交互逻辑,比如在用户...

    如何将编辑框EditText置于系统软键盘之上小例子

    如果`adjustPan`效果不理想,或者你需要更复杂的控制,例如点击屏幕其他区域隐藏软键盘,可以自定义事件监听。首先,为根布局设置点击事件: ```java rootLayout.setOnClickListener(new View.OnClickListener() { ...

    无软键盘弹出EditText

    4. **监听焦点变化**:为EditText添加OnFocusChangeListener,当EditText获取焦点时,隐藏软键盘。 ```java editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void ...

    触摸除输入框以外的其它区域自动隐藏软键盘

    本文将详细讲解如何实现"触摸除输入框以外的其它区域自动隐藏软键盘"这一功能。 首先,我们需要了解Android系统的输入法管理机制。在Android中,软键盘的显示与隐藏是由InputMethodManager这个系统服务控制的。...

    Android编程实现点击EditText之外的控件隐藏软键盘功能

    在上面的代码中,我们使用递归遍历控件树,设置所有非 EditText 控件的 onTouch 事件监听器,以便在点击这些控件时隐藏软键盘。 5. 在 Activity 中调用 setupUI 方法 在 Activity 中,我们可以在 onCreate 方法中...

    点击空白隐藏EditText软件盘

    在Android应用开发中,EditText控件是用户输入文本的常用组件,而软键盘则是与之配合,供用户输入文字的虚拟键盘。然而,在某些场景下,我们可能希望用户在完成输入后,通过点击屏幕空白区域就能自动隐藏软键盘,以...

    android 全屏模式下软键盘软键盘不遮挡edittext的例子

    在Android开发中,全屏模式下遇到的一个常见问题是当用户点击EditText输入时,弹出的软键盘会遮挡住部分或全部界面,导致用户无法看到正在编辑的内容。为了解决这个问题,我们可以采用一些策略来调整布局,确保软...

    安卓EditText输入框相关-edittext失去焦点收起键盘.rar

    3. **隐藏软键盘**: 软键盘的隐藏通常通过`InputMethodManager`实现。在`onFocusChange()`方法中,获取到`InputMethodManager`实例,然后调用`hideSoftInputFromWindow()`方法,传入EditText的窗口令牌和0作为参数...

    Android Dialog与软键盘的正确打开方式

    `adjustResize`会使Activity内容区域重新调整大小以适应软键盘,而`adjustPan`则会将Dialog向上推移,以便EditText仍然可见。 2. 对于Dialog,由于它不是Activity,我们不能直接在Manifest中设置`...

    Android 设置Edittext获取焦点并弹出软键盘

    如果希望在用户点击其他地方时隐藏软键盘,可以监听`OnTouchEvent`并在用户点击屏幕其他位置时调用`InputMethodManager`的`hideSoftInputFromWindow()`方法: ```java InputMethodManager imm = ...

    隐藏软键盘

    当检测到用户在非输入控件区域点击时,调用隐藏软键盘的方法。例如: ```java @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { ...

    Android View 完美实现EditText 在软键盘上边的示例

    在本示例中,我们使用 isOpenKeyboard 变量来记录软键盘的状态,并在需要时打开或隐藏软键盘。 知识点5:布局文件的使用 布局文件是 Android 中一种常用的 UI 组件,我们可以使用布局文件来定义界面布局。在本示例...

    android edittext 自定义按键盘

    在Android开发中,EditText是用于用户输入文本的基本控件,通常会伴随着系统默认的软键盘弹出,以便用户输入文字。然而,在某些特定场景下,我们可能需要自定义键盘,而不是使用系统的软键盘,比如游戏界面、数字...

    editview软键盘自动弹出和隐藏

    接下来,要实现在点击非软键盘区域时隐藏软键盘,你需要监听整个视图的触摸事件。可以为根布局设置一个`OnTouchListener`,当检测到点击事件且点击位置不在EditView上时,调用`hideSoftInputFromWindow()`方法隐藏软...

    EditText跟随键盘弹出,背景不动

    当用户点击EditText输入时,系统会自动弹出软键盘。这会影响到Activity的根布局(通常是一个LinearLayout或RelativeLayout),因为键盘的出现占据了屏幕的一部分,导致布局向上移动。然而,背景不动意味着我们希望...

    android监听软键盘状态

    当用户在EditText等输入框中点击时,系统会自动弹出软键盘。然而,Android SDK并没有提供直接的方法来检测软键盘的显示和隐藏。因此,我们需要通过一些间接的方式来实现这一目标。 一种常见的方法是通过测量...

Global site tag (gtag.js) - Google Analytics