Android 监听软键盘弹出/隐藏,控制软键盘弹出/隐藏
使用环境:
需要控件软键盘时;
使用方法:
输入框的弹出/隐藏监听
/*** 显示软键盘 隐藏删除* 隐藏软键盘 显示删除*/SoftKeyBoardListener.setListener(getActivity(), new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {@Overridepublic void keyBoardShow(int height) {LogUtil.e("键盘弹出");}@Overridepublic void keyBoardHide(int height) {LogUtil.e("键盘隐藏");}});
public class SoftKeyBoardListener {private View rootView;//activity的根视图int rootViewVisibleHeight;//纪录根视图的显示高度private OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener;public SoftKeyBoardListener(Activity activity) {//获取activity的根视图rootView = activity.getWindow().getDecorView();//监听视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//获取当前根视图在屏幕上显示的大小Rect r = new Rect();rootView.getWindowVisibleDisplayFrame(r);int visibleHeight = r.height();System.out.println(""+visibleHeight);if (rootViewVisibleHeight == 0) {rootViewVisibleHeight = visibleHeight;return;}//根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变if (rootViewVisibleHeight == visibleHeight) {return;}//根视图显示高度变小超过200,可以看作软键盘显示了if (rootViewVisibleHeight - visibleHeight > 200) {if (onSoftKeyBoardChangeListener != null) {onSoftKeyBoardChangeListener.keyBoardShow(rootViewVisibleHeight - visibleHeight);}rootViewVisibleHeight = visibleHeight;return;}//根视图显示高度变大超过200,可以看作软键盘隐藏了if (visibleHeight - rootViewVisibleHeight > 200) {if (onSoftKeyBoardChangeListener != null) {onSoftKeyBoardChangeListener.keyBoardHide(visibleHeight - rootViewVisibleHeight);}rootViewVisibleHeight = visibleHeight;return;}}});}private void setOnSoftKeyBoardChangeListener(OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {this.onSoftKeyBoardChangeListener = onSoftKeyBoardChangeListener;}public interface OnSoftKeyBoardChangeListener {void keyBoardShow(int height);void keyBoardHide(int height);}public static void setListener(Activity activity, OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {SoftKeyBoardListener softKeyBoardListener = new SoftKeyBoardListener(activity);softKeyBoardListener.setOnSoftKeyBoardChangeListener(onSoftKeyBoardChangeListener);}}
关闭或者显示输入框的方法
import android.content.Context;
import android.view.inputmethod.InputMethodManager;public class KeyBroadUtils {public static void showOrHide(Context context) {InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}}
有了监听,有了关闭和显示的方法,输入框岂不是随你操作?
更多讨论,欢迎来询问: 88627109
Android 监听软键盘弹出/隐藏,控制软键盘弹出/隐藏相关推荐
- Android监听系统输入法键盘弹出显示与隐藏事件
Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...
- Android 监听SD卡插入与拔出
Android 监听SD卡插入与拔出 简单记录一下Android 如何监听SD卡插入与拔出,注意事项: 继承广播: public class SdStatusReceiver extends Broa ...
- android 监听手机电量变化
今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...
- Android 监听短信数据库过滤获取短信内容上传至服务器
前言 Android 监听短信的方式有两种 1.监听短信数据库,数据库发生改变时回调. 2.监听短信广播 其中第二种方式由于国内各厂家的定制Android 可能导致无响应 目前测试 魅族 无法监听到短 ...
- android 监听图库变化,Android ContentObserver 监听图库变化
电脑环境是XP,软件是gVim7.3,安装在C盘的 Program Files 下.如何设置gVim的字体和背景颜色:C---Program Files---Vim---_vimrc文件,用文本编辑器 ...
- Android 监听横竖屏切换
Android 监听横竖屏切换 重写 Activity 中的 onConfigurationChanged 方法 override fun onConfigurationChanged(newConf ...
- Android 监听双卡信号强度
Android 监听双卡信号强度 监听单卡信号强度 监听单卡的信号强度非常简单直接用TelephonyManager.listen()去监听sim卡的信号强度. 1 2 TelephonyManage ...
- Android 监听 WiFi 开关状态
Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...
- android 监听手机开机
今天,简单讲讲 android 监听手机开机. 需求描述:有些时候,我们需要我们的程序在开机后能自动运行,在系统即将关闭时,能写入一些记录到指定的文件里. 一.开机广播监听: Android系统 ...
- android 监听屏幕是否锁屏
今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可 ...
最新文章
- 10000字的Pandas核心操作知识大全!
- 计算科学如何帮助中国制造业成为全球领导者?李开复余承东胡郁等14位产学研大佬这样说|2021 CCF CTO高峰论坛...
- 大神建议我们经常阅读AI论文,你却不知道去哪找?最全论文给到你!
- Tomcat 之 Session的活化和钝化 源码分析
- 树莓派外设开发之接入语音模块
- 【LCT】Tree II(luogu 1501)
- 用于Spring JPA2后端的REST CXF
- jmeter自定义并发用户数图形插件介绍
- 用最通俗易懂的方式打开区块链!
- 将文件标记为 side-effect-free(无副作用)
- 配置Git for windows(Git bash)登录GitHub
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录
- python多维数据聚类可视化_基于python3的可视化数据聚类系统(k-means算法和k-中心点算法)...
- UE4特效萌新上手笔记-Houdini导Niagara配置
- jqwidgets 国际化- 中文 jqxGrid 中文语言包 gridlocalization
- jQuery 的表单验证之提交验证
- 【附源码】Java计算机毕业设计安卓和悦少年文明礼仪监管APP(程序+LW+部署)
- TELNET命令行操作IMAP收件箱
- C语言学生信息管理系统第二版(附带密码登录模式)
热门文章
- TechNet中文网络广播office系列视频教程下载(一)(2007-02-28 09:18:18) 分类:Office...
- 只有一条线的生存分析图 复杂一点的生存分析 及其参数详细解释
- JSP报刊订阅管理系统
- 计算机管理禁用usb,电脑如何禁用U盘、怎样禁用USB存储工具,防止USB端口泄密?...
- 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
- ubuntu中文论坛
- Matlab加矩形窗程序,基于MATLAB结合矩形窗设计FIR滤波器
- win10前面板耳机无声音解决
- [产品经理]产品经理的职责
- Android DeviceOwner 应用的能力