android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法
用过ios的都知道ios上输入法关闭的同时会自动关闭输入框,那么在android上如何实现监听输入法弹出和关闭呢?本篇文章就为你提供了一种可靠的实现方式。
首先在AndroidManifest中配置
android:windowSoftInputMode="adjustResize"
这样每次输入法弹出和关闭都会重新计算高度实现把布局顶上去的效果
然后我们要自定义一个布局,监听布局大小变化
public class CheckSoftInputLayout extends FrameLayout {
private OnResizeListener mOnResizeListener;
public CheckSoftInputLayout(Context context) {
super(context);
}
public CheckSoftInputLayout(Context context, AttributeSet attrs) {
super(context, attires);
}
public CheckSoftInputLayout(Context context, AttributeSet attrs, int
defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(21)
public CheckSoftInputLayout(Context context, AttributeSet attrs, int
defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, old);
if (mOnResizeListener != null) {
mOnResizeListener.onResize(w, h, oldw, old);
}
}
public void setOnResizeListener(OnResizeListener listener) {
this.mOnResizeListener = listener;
}
public interface OnResizeListener {
void onResize(int w, int h, int oldw, int old);
}
}
然后把上面的自定义布局作为跟布局放到你需要的Activity中去,然后在Activity中绑定监听事件
mRootLayout.setOnResizeListener(this);
@Override
public void onResize(int w, int h, int oldw, int oldh) {
//如果第一次初始化
if (oldh == 0) {
return;
}
//如果用户横竖屏转换
if (w != oldw) {
return;
}
if (h < oldh) {
//输入法弹出
} else if (h > oldh) {
//输入法关闭
setCommentViewEnabled(false, false);
}
int distance = h - old;
EventBus.getDefault().post(new InputMethodChangeEvent(distance,mCurrentImageId));
}
这样只要输入法弹出和关闭就能自动实现监听,达到关闭输入框的效果,这样就和苹果的体验很一致。 到这里就介绍完了,如果有什么好的思路,也欢迎评论分享点赞! [Github demo地址](https://github.com/gupengcheng/CheckSoftInputDemo)
android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法相关推荐
- android 输入法 监听,android 监听 输入法
场景:android 应用监听输入法按键事件[例如搜索和回车键等]的整个流程分析 android 应用监听输入法按键事件[比如搜索和回车键等]的整个流程分析 继承于InputMethodService ...
- Android Glide加载图片、网络监听、设置资源监听
Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言 在日常开发中使用 ...
- android 通过GPS获取用户地理位置并监听位置变化
1 Location Manager 管理服务 2 Location Provider 提供数据的content provider 方式一:GPS 特点:精度高,耗电量大,不耗费流量 权限<us ...
- Android Activity 生命周期详解及监听
前言 系列文章: Android Activity 与View 的互动思考 Android Activity 生命周期详解及监听 Android onSaveInstanceState/onResto ...
- 安卓监听输入法键盘打开关闭(兼容虚拟按键栏的手机,比如华为)
可以监听输入法键盘的打开和关闭动作,通过回调精准判断,兼容几乎所有手机 原理: 在输入法打开和关闭的时候会引起当前界面的高度变化,从而出发onLayout方法,所以我们监听layout动作,当触发此方 ...
- 确认取消弹窗的监听事件
在android中,很多时候要用到确认取消弹窗,监听弹窗的确认和取消,也是经常用到的方法. LiveHintDialog liveHintDialog = new LiveHintDialog(thi ...
- input框监听输入法输入中文
input框监听输入法输入中文 需求 input事件 select为什么不能使用 注意select的onChange和onSearch 需求 想要在input框中进行接口实时查询,但是在使用输入法输入 ...
- iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧
最近在做用户登录获取验证码时添加图形验证码功能,就是只有正确输入图形验证码才能收到后台发送的短信验证码.效果如下: 看起来虽然是个小功能,但是实际操作起来,会发现苹果给我们留下的坑,当然更多的是自己给 ...
- js 监听输入法组合文字过程
1.监听输入法输入开始和结束compositionstart.compositionEnd分别监听输入开始和结束2.在其他事件中获取到输入法组合状态通过往e.target上定义一个composing属 ...
最新文章
- 检测硬盘使用时长_如何检测硬盘问题
- ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!
- Android:四种启动模式分析
- 如何在tensorflow2环境运行tensorflow1代码
- 模仿写一个小型网站框架
- 双点双向路由引入/路由重发布
- 史上最简单的上传文件到linux系统方法
- 西门子转以太网模块连接S7-300以太网驱动
- CDA数据分析师教材与题库
- Vista 如何关闭UAC(用户帐户控制)
- 英国开创自我修复城市概念,利用无人机和机器人自动检测道路裂缝并进行修复
- 程序员如何边工作边创业?
- 怎么打开avi文件文件损坏_什么是AVI文件(以及如何打开一个文件)?
- Python Leetcode(507.完美数)
- Martin Fowler关于microservices(微服务)的原文和翻译
- C语言typedef结构体的理解
- 微软的专利防御与应对——加入专利防御组织OIN
- TreeSize Free (硬盘空间显示工具) V3.
- Visual Studio封装静态链接库至新静态库,供程序调用
- 武汉200多分的大专计算机学校,本人学渣一枚,想知道高考200多分能上哪些高职高专,湖北有哪些好? 爱问知识人...
热门文章
- ASP.NET页面跳转
- JavaScript 中 substr 和 substring的区别
- 增益和偏移的概念_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO...
- boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录
- mysql数据库做关联查询_mysql 数据库join关联查询using(xxx)的作用
- arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
- mysql 显示右边所有名称_查询表 - [ MySql参考手册 ] - 在线原生手册 - php中文网
- oracle 德文符号处理_南沙区专业高效的化妆废水处理操作简单
- 为双十二灵感设计屯好素材!
- 计算机断电后会丢失的是什么,计算机突然停电,什么数据会丢失?