android 键盘自动收起来了,Android 键盘收起
最近项目上遇一个键盘问题:
在一个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 键盘收起相关推荐
- Android 10自动连接WiFi问题 Android 10 断开WiFi问题
说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...
- android取消自动调试模式吗,Android进入调试模式的三种技巧
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android开发过程中难免会遇到各种问题,通常我们会通过打印Log日志或者Debug模式来分析问题.这里介绍下Andr ...
- android进程自动启动时间,如何统计Android App启动时间
随着App的逻辑不断庞大,一不注意就会将耗时的操作放置在应用启动过程之中,导致应用启动速度越来越慢,用户体验也越来越差.优化启动速度是几乎所有大型App应用开发者需要考虑的问题.优化启动速度之前首先需 ...
- android 能自动选择的listview,Android ListView多选模式
ListView使用多选模式好处 交互与数据分离,在多选状态下不需要修改数据源,在最后确定的时候获取选择索引来确定选择的数据. ListView模式 CHOICE_MODE_NONE:普通模式: CH ...
- android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?
在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...
- android实现自动横竖屏切换,android 中实现横竖屏切换【原创】
我们在使用android手机的时候,发现一些应用有横竖屏切换的功能,一般实现有以下几种方法: 一.设置 1.通过XML设置横竖屏切换 在项目的 AndroidManifest.xml中找到你所指定的a ...
- android系统自动休眠代码流程,Android P 电源管理(4)待机流程
电视遥控器,短端走待机(str待机)流程, 长按是关机,走关机流程,记录下待机流程. 参考博客 待机流程 Android P引入自动待机功能,只有存在WakeLock,wakeup_count就不会为 ...
- android studio 自动生成sql语句,Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件...
项目源码 系列教程 插件介绍 本篇实战撸个自动生成安卓Sqlite数据库代码的插件,先演示下最终效果 db文件夹下的都是插件自动生成的,而MainActivity里面的代码是我提前写好的,用于实验插件 ...
- android apk自动安装包下载,Android实现应用下载并自动安装apk包
安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...
最新文章
- 清华《人工智能之认知图谱》:中美高水平学者数量领跑全球
- Ruby on Rails路径穿越与任意文件读取漏洞分析(CVE-2019-5418)
- 联想50寸4K电视S9开箱:骚黄的大块头
- PyQt5 笔记3 -- 信号与槽
- 【MCtalk】“互联网+”技术融合论坛
- pyqt5与matplotlib结合画图 ,绘制动态图形
- 浅谈MVC设计模式和SSH框架的关系
- python382怎么用_教你如何使用Python快速生成验证码
- C语言-查找顺序表中的最大值
- python中的记录指针_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
- js中定义变量加var与不加var的区别?
- 解决谷歌disabled状态下操作问题
- 单元测试、集成测试、系统测试的不同
- IT江湖之怎样成为IT界的西门吹雪和独孤求败
- HR面试问题-你的缺点是什么?
- B站付费视频使up主掉粉过万
- Toggle Buttons(一)
- php面向对象--php面向对象ppt
- 题解:线性规划与网络流24题 T2 太空飞行计划问题
- 《杜拉拉升职记》职场36计
热门文章
- 为元宇宙提供动力的关键技术驱动力
- gittortoise使用ssh秘钥
- matlab三维螺旋,Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图...
- Linux常用基础指令、Linux常用工具(软件包)使用带图详解
- [转]浅谈缓冲区溢出之栈溢出
- 计算机网络怎么运行内存,电脑运行内存怎么扩大(教你使用虚拟内存来增加win7系统的运行内存)...
- 微信小程序之自定义组件的使用、介绍、案例分享
- CodeVs 1148 传球游戏
- TX2跑通yolov4
- Tensorflow 自然语言处理