android点击键盘外关闭软键盘
安卓功能记录之点击键盘外关闭软键盘,用于日常记录
//关闭软键盘@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent(ev);}// 必不可少,否则所有的组件都不会有TouchEvent了if (getWindow().superDispatchTouchEvent(ev)) {return true;}return 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;}
在fragment中关闭软键盘方法:
在fragment中由于没有onTouchEvent重写所以可以在onCreateView中,对view使用以下方法:
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
InputMethodManager manager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
if(event.getAction() == MotionEvent.ACTION_DOWN){
if(getActivity().getCurrentFocus()!=null && getActivity().getCurrentFocus().getWindowToken()!=null){
manager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
return false;
}
});
当你的activity或者fragment中包含scrollview的时候 无法调用 Fragment中这样来调用:
public static void hintKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive() && activity.getCurrentFocus() != null) {
if (activity.getCurrentFocus().getWindowToken() != null) {
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
/**
* 设置点击软键盘之外区域,软键盘消失
*
* @param view
*/
public void setHintKeyboardView(View view) {
if (!(view instanceof EditText)) {
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hintKeyboard(getActivity());
return false;
}
});
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setHintKeyboardView(innerView);
}
}
}
android点击键盘外关闭软键盘相关推荐
- DialogFragment常见问题(黑色棱角、点击编辑框外关闭软键盘..)
1.设置对话框外部的背景为完全透明: 在onStart()方法中加入以下代码: @Overridepublic void onStart() {super.onStart();/*** 将对话框外部( ...
- android 关闭软键盘,点击软键盘之外关闭软键盘,editText关闭键盘
/*** @description 关闭界面软键盘方法 复制直接调closeKeyBoard()用即可实现关闭软键盘*/ private InputMethodManager mImm; public ...
- 点击空白区域关闭软键盘
很多时候,需求需要点击输入框其他地方,关闭软键盘,下面分享一个utils public class HideKeyBroadUtils {private HideKeyBroadUtils(){}/* ...
- Android 点击空白出隐藏软键盘
/*** 点击空白位置 隐藏软键盘*/@Overridepublic boolean onTouchEvent(MotionEvent event) {if (null != this.getCurr ...
- Android 点击屏幕空白处隐藏软键盘
前言 最近在重构老项目 把之前的拍照功能也搬过来了 在输入打卡号的时候 软键盘一直在打开着 点签到按钮 很麻烦 所以想实现 点击屏幕空白处隐藏软键盘!! 封装工具 据传入控件的坐标和用户的焦点坐标,判 ...
- 点击Home键关闭软键盘
有的小伙伴在Android项目开发中可能遇到了在点击Home键时关闭系统软键盘的问题.对于这个问题,可以通过注册广播的形式解决.现分享一段代码,仅供参考. public class HideSoftI ...
- android软键盘设置收起键,Android 点击任意位置收起软键盘
@Override public boolean dispatchTouchEvent(MotionEvent ev) { AppUtils.hideInputWhenTouchOtherView(t ...
- android 点击关闭软键盘
在项目中,editText获取焦点后,会自动弹出软键盘,关闭的时候一般需要按返回键或者点击软键盘上的按钮, 即使当前activity已经finish掉,软键盘依然存在,会影响用户的体验. 网上目前有很 ...
- android点击软键盘外面的区域关闭软键盘解决办法
很多时候在一个页面有多个输入框或者输入框加选择框的时候,我们需要根据用户的点击去关闭软键盘. 在Activity中加入以下代码即可 /**重写dispatchTouchEvent* 点击软键盘外面的区 ...
最新文章
- POJ 2388 Who's in the Middle
- 卡片的sak为不支持的类型_“师傅”两字是不能随便叫的!78%的网友不支持称顺风车主为“师傅”...
- JAVA高级工程师课程笔记整理——(八)tomcat与九大内置对象
- Lombok 使用小结
- 电路 第五版 第二章 电阻电路的等效变换
- 信息学奥赛一本通C++语言——1037:计算2的幂
- AI(3)--手机上的AI技术
- 女子多年未住别墅成剧组拍摄地,网友:看个剧才想起自己还有栋别墅
- Spring Mvc + Spring + Mybatis3 搭建Web工程详解
- C语言程序设计基础实验教程,C语言程序设计基础实验教程
- android 查看gpu频率_借骁龙 855 Plus,聊聊 CPU / GPU 怎样影响手机游戏性能
- centos7 安装 php7
- compileflow 淘宝工作流引擎
- 计算机电子表格考点,计算机一级考试历年常见考点总结:Excel电子表格
- 在 Half-Life MOD 中创建自己的武器及弹药
- Python学习笔记--day15 内置模块和开发规范
- 计算机网络 lab2 Ethernet
- Windows模拟器推荐
- Python爬虫BS4库的解析器正确使用方法
- 基于ESB的业务集成业务梳理
热门文章
- 为何如此之快?ClickHouse的核心特性及架构
- XUPT Linux Group 2020 2021 2022 note
- 安装.NET Framework 4.6.1
- Java中的权限修饰符和状态修饰符
- Linux之四剑客之awk
- 小红书文案怎么写才能吸引用户,品牌写文技巧
- Windows 10 硬盘安装 Ubuntu 20.04 教程 (MBR)
- tensorflow花朵分类
- 框架:你会用又能写,但是你能说明白什么是框架吗
- java metadata 使用_Java DatabaseMetaData getTables()方法与示例