使用步骤

xml 布局文件布局,和普通的控件一下

获取SoftInputCanListenerEditText 实例,并设置监听器

Activity 注册的时候android:windowSoftInputMode 使用默认值,就是说不要写这个就对了

/**

* author: vector.huang

* date: 2016/10/12 19:07

*/

public class SoftInputCanListenerEditText extends AppCompatEditText {

private OnSoftInputChangeListener mOnSoftInputChangeListener;

private int mPreHeight; //上一次计算时的高度

private View mContentView;

private boolean isShow;

public SoftInputCanListenerEditText(Context context) {

super(context);

}

public SoftInputCanListenerEditText(Context context, AttributeSet attrs) {

super(context, attrs);

}

public SoftInputCanListenerEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

public void setOnSoftInputChangeListener(OnSoftInputChangeListener onSoftInputChangeListener) {

mOnSoftInputChangeListener = onSoftInputChangeListener;

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (isInEditMode()) {

return;

}

if (mContentView == null) {

Activity activity = (Activity) ((TintContextWrapper) getContext()).getBaseContext();

mContentView = activity.findViewById(android.R.id.content);

}

int nowHeight = mContentView.getHeight();

if (mPreHeight == 0) {

//第一次进入

mPreHeight = nowHeight;

return;

}

if (mPreHeight == nowHeight) {

//同样的不处理

return;

}

if (mOnSoftInputChangeListener != null && nowHeight < mPreHeight) {

//变小了之后就是显示了键盘

mOnSoftInputChangeListener.onChange(true);

isShow = true;

//显示键盘之后就开始检查什么时候收起

startCheck();

mPreHeight = nowHeight;

}

}

private Runnable check = () -> {

int nowHeight = mContentView.getHeight();

if (mOnSoftInputChangeListener != null && nowHeight > mPreHeight) {

//变小了之后就是显示了键盘

mOnSoftInputChangeListener.onChange(false);

isShow = false;

mPreHeight = nowHeight;

return;

}

//键盘没有收起,接着检查

startCheck();

};

//定时检查才行呀

private void startCheck() {

postDelayed(check, 100);

}

public boolean isShow() {

return isShow;

}

public interface OnSoftInputChangeListener{

void onChange(boolean isShow);

}

}

感谢支持,更多请看把时间当初朋友

android监听键盘的隐藏,Android监听软键盘的显示和隐藏相关推荐

  1. android 键盘隐藏监听,安卓监听软键盘弹出与隐藏的两种方法

    需求: 现在有一个需求是点击一行文本框,弹出一个之前隐藏的输入框,输入完成后按返回键或者其他的东西隐藏键盘和输入框,将输入框的内容填充到文本框中. 实现: 拿到这个需求的第一反应就是写一个监听来监听键 ...

  2. android webview监听软键盘弹出和隐藏来修改虚拟导航栏颜色

    最近项目中用到了webview,然后里面有输入框,当我们点击输入框的时候,软键盘挡住了布局,这就尴尬了,并且产品说,只有在软键盘弹出的时候底部的虚拟导航栏为黑色,软键盘隐藏的时候虚拟导航栏应该也隐藏. ...

  3. Android中根据dialog的展示与否控制软键盘的显示与隐藏

    好久没有写博客,今天一直在解决一个根据弹框的展示与否来控制软键盘是否展示的问题. 本文用于记录关键点. 关键点:1.该弹框包含一个输入框Edittext ,所以需要根据确定与取消按钮来控制软件盘的展示 ...

  4. Android软键盘的显示与隐藏

    本文仅是对原创文章重新进行或多或少的代码测试,权当记录并加深印象 再次感谢开发者社区的分享 一:简述 点击文本框EditText,系统会自动弹出软键盘(其本质是一个Dialog),这必然会引起当前Ac ...

  5. 【Android应用】【监听软键盘弹起与关闭】

    [背景] 在很多App开发过程中需要在Activity中监听Android设备的软键盘弹起与关闭,但是Android似乎没有提供相关的的监听API给我们来调用,本文提供了一个可行的办法来监听软键盘的弹 ...

  6. Android App监听软键盘按键的三种方式(转)

    最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的&quo ...

  7. Android App监听软键盘按键的三种方式

    前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的"GO"按键加载url页面:在点击搜索框的时候,点 ...

  8. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  9. Android 监听软键盘的高度并解决其覆盖输入框的问题

    1.前言 在某些项目中,我们常常需要自定义一个输入框,软键盘弹出时就把输入框顶上去,关闭时输入框再回到原位(比如下方的效果图,实际上各种 App 中的聊天界面和发布评论的界面大体都是这样).在这个过程 ...

最新文章

  1. qt跟随鼠标动态绘制_采用Qt快速绘制多条曲线(折线),跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发)...
  2. 对比学习系列论文SDCLR(一)-Self-Damaging Contrastive Learning论文的概括
  3. CSDN-Markdown编辑器使用小技巧
  4. java 栈 先进后出_栈先进后出,堆先进先出
  5. 10-关于DOM的事件操作
  6. gis等时圈怎么做_如何批量制作交通等时圈
  7. thinkphp开启子域名无法正常访问_解决TP6报错“当前访问路由未定义或不匹配”...
  8. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现
  9. 韩国韩亚航空数万份乘客身份信息被泄露
  10. 【长文】CNN调优总结
  11. 【资源】同济线性代数教材(第五版)
  12. [简单]itext官网例子链接
  13. 阿里maven仓库地址
  14. XMLSpy入门实验---第一个XML
  15. MOCTF-WRITE-UP(二)
  16. 《从0到1上线微信小游戏》第七节 微信排行榜和好友分享功能
  17. php环境下,两种汇率接口,已经测试通过
  18. 委内瑞拉肯德基将接受Dash支付
  19. 截至2022年12月共计451个信息安全国家标准汇总
  20. 编程算法基础-常数变易法

热门文章

  1. Flutter实战一Flutter聊天应用(六)
  2. mysql几种备份恢复_mysql多种备份与恢复方式一
  3. 怎么做app图标_App拉新:以老拉新活动怎么做?
  4. 索引添加后,ACCESS数据库表查询运行速度的区别
  5. 中台彻底搞砸了?下一站,小中台大前台
  6. 亚信安全携五大创新安全方案,发布AI²亚信安全智能框架
  7. 被遗忘的 Mozilla?
  8. 因为造轮子,我一个月就转正了 | 原力计划
  9. 高效办公,从几行批处理命令开始 | 原力计划
  10. 付费?广告?捐款?如何让开源软件活下去?