最近项目上遇一个键盘问题:

在一个Activity上显示了一个带EditText的Dialog,在Dialog的OnDismissListener调用了键盘的hideSoftInputFromWindow()方法,但键盘并没有隐藏,还返回了false。

这个方法有两个参数,下面是我传入的值。

if (getWindow().getCurrentFocus() != null) {

imm().hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0);

} else {

imm().hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);

}

原理都没有错,就是没有隐藏掉,不知道是为什么?

于是我就看了一下源码的注释

/**

* Synonym for {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}

* without a result: request to hide the soft input window from the

* context of the window that is currently accepting input.

*

* @param windowToken The token of the window that is making the request,

* as returned by {@link View#getWindowToken() View.getWindowToken()}.

* @param flags Provides additional operating flags. Currently may be

* 0 or have the {@link #HIDE_IMPLICIT_ONLY} bit set.

*/

public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) {

return hideSoftInputFromWindow(windowToken, flags, null);

}

上面是hideSoftInputFromWindow()方法的官方解释。意思就是说,需要使用当前正在接收输入事件的Window来隐藏。

重点来了, 当前接收输入事件Window。

这个指的是Dialog的Window还是Activity的Window?

经过我实验,都不是确定指的是哪一个,其实指的是获取焦点的那个Window。

当Dialog消失的时候,指的就是Activity的

当Dialog没有消失的时候,指的就是Dialog的。

所以有些解决办法

dialog.setOnDismissListener(()->{

Au.postDelay(hideInput(), 100);

});

并不是一个可靠的方法,不知道100ms之后,dialog是不是真正从屏幕上消失了。

最后,解决办法:尽早隐藏键盘

.setPositiveButton(

"dismiss",

(dialog1, which) -> {

hideInput();

dialog1.dismiss();

});

如果那位大神,有更好的办法,欢迎留言交流

android 键盘自动收起来了,Android 键盘收起相关推荐

  1. Android 10自动连接WiFi问题 Android 10 断开WiFi问题

    说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...

  2. android取消自动调试模式吗,Android进入调试模式的三种技巧

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android开发过程中难免会遇到各种问题,通常我们会通过打印Log日志或者Debug模式来分析问题.这里介绍下Andr ...

  3. android进程自动启动时间,如何统计Android App启动时间

    随着App的逻辑不断庞大,一不注意就会将耗时的操作放置在应用启动过程之中,导致应用启动速度越来越慢,用户体验也越来越差.优化启动速度是几乎所有大型App应用开发者需要考虑的问题.优化启动速度之前首先需 ...

  4. android 能自动选择的listview,Android ListView多选模式

    ListView使用多选模式好处 交互与数据分离,在多选状态下不需要修改数据源,在最后确定的时候获取选择索引来确定选择的数据. ListView模式 CHOICE_MODE_NONE:普通模式: CH ...

  5. android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?

    在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...

  6. android实现自动横竖屏切换,android 中实现横竖屏切换【原创】

    我们在使用android手机的时候,发现一些应用有横竖屏切换的功能,一般实现有以下几种方法: 一.设置 1.通过XML设置横竖屏切换 在项目的 AndroidManifest.xml中找到你所指定的a ...

  7. android系统自动休眠代码流程,Android P 电源管理(4)待机流程

    电视遥控器,短端走待机(str待机)流程, 长按是关机,走关机流程,记录下待机流程. 参考博客 待机流程 Android P引入自动待机功能,只有存在WakeLock,wakeup_count就不会为 ...

  8. android studio 自动生成sql语句,Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件...

    项目源码 系列教程 插件介绍 本篇实战撸个自动生成安卓Sqlite数据库代码的插件,先演示下最终效果 db文件夹下的都是插件自动生成的,而MainActivity里面的代码是我提前写好的,用于实验插件 ...

  9. android apk自动安装包下载,Android实现应用下载并自动安装apk包

    安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...

最新文章

  1. 清华《人工智能之认知图谱》:中美高水平学者数量领跑全球
  2. Ruby on Rails路径穿越与任意文件读取漏洞分析(CVE-2019-5418)
  3. 联想50寸4K电视S9开箱:骚黄的大块头
  4. PyQt5 笔记3 -- 信号与槽
  5. 【MCtalk】“互联网+”技术融合论坛
  6. pyqt5与matplotlib结合画图 ,绘制动态图形
  7. 浅谈MVC设计模式和SSH框架的关系
  8. python382怎么用_教你如何使用Python快速生成验证码
  9. C语言-查找顺序表中的最大值
  10. python中的记录指针_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
  11. js中定义变量加var与不加var的区别?
  12. 解决谷歌disabled状态下操作问题
  13. 单元测试、集成测试、系统测试的不同
  14. IT江湖之怎样成为IT界的西门吹雪和独孤求败
  15. HR面试问题-你的缺点是什么?
  16. B站付费视频使up主掉粉过万
  17. Toggle Buttons(一)
  18. php面向对象--php面向对象ppt
  19. 题解:线性规划与网络流24题 T2 太空飞行计划问题
  20. 《杜拉拉升职记》职场36计

热门文章

  1. 为元宇宙提供动力的关键技术驱动力
  2. gittortoise使用ssh秘钥
  3. matlab三维螺旋,Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图...
  4. Linux常用基础指令、Linux常用工具(软件包)使用带图详解
  5. [转]浅谈缓冲区溢出之栈溢出
  6. 计算机网络怎么运行内存,电脑运行内存怎么扩大(教你使用虚拟内存来增加win7系统的运行内存)...
  7. 微信小程序之自定义组件的使用、介绍、案例分享
  8. CodeVs 1148 传球游戏
  9. TX2跑通yolov4
  10. Tensorflow 自然语言处理