Android EditText与软键盘
文章目录
- Android EditText与软键盘
- windowSoftInputMod 属性
- adjustPan & adjustResize的区别
- EditText 获取焦点 & 失去焦点
- 软键盘工具类
Android EditText与软键盘
windowSoftInputMod 属性
软键盘状态
属性值 | 说明 |
---|---|
stateUnspecified | 系统默认行为。系统会根据不同场景决定键盘显示状态,如Activity中有一个EditText不会显示键盘,但使用ScrollView嵌套后,会显示键盘。 |
stateUnchanged | 下一个界面的显示状态与当前界面保持一致。 |
stateHidden | 初次进入界面时,隐藏键盘。 |
stateAlwaysHidden | 无论是初次进入界面还是从其他界面导航回来,总是隐藏键盘。 |
stateVisible | 初次进入界面时,显示键盘。 |
stateAlwaysVisible | 无论是初次进入界面还是从其他界面导航回来,总是显示键盘。 |
布局变化
属性值 | 说明 |
---|---|
adjustUnspecified | 系统默认设置,由系统决定 |
adjustResize | 调整界面的尺寸,从底部抬起键盘高度,顶部保持不变,中间区域可能被底部顶上的内容覆盖。 |
adjustPan | 键盘会顶到焦点下面,window整体会向上抬起。 |
adjustNothing | 布局没有变化,键盘覆盖在布局上面。 |
adjustPan & adjustResize的区别
adjustPan
adjustPan:软键盘会顶在焦点下面,window会被顶起抬升,但是DecorView和ContentView的高度没有影响。
Log.e("TAG","""adjustPan:contentIdView: ${contentIdView.height} ${contentIdView.measuredHeight}decorView: ${decorView.height} ${decorView.measuredHeight}
""".trimIndent())
软键盘展开:contentIdView: 2153 2153decorView: 2400 2400软键盘收起:contentIdView: 2153 2153decorView: 2400 2400
adjustResize
adjustResize:可能会调整界面尺寸,ContentView可能会缩小。
软键盘展开:contentIdView: 2153 2153decorView: 2400 2400软键盘收起:contentIdView: 1344 1344decorView: 2400 2400
EditText 获取焦点 & 失去焦点
//获取焦点
editText.isFocusable = true;
editText.isFocusableInTouchMode = true;
editText.requestFocus()//失去焦点
editText.clearFocus()
软键盘工具类
/*** 软键盘工具类*/
object KeyboardUtils {/*** 显示软键盘* 需要先 requestFocus 获取焦点,如果是在 Activity Create,那么需要延迟一段时间*/fun showKeyboard(view: View?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.showSoftInput(view, 0)}/*** 强制显示软键盘,页面滚动时不会收起*/fun forceShowKeyboard(view: EditText?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.showSoftInput(view, InputMethodManager.SHOW_FORCED)}/*** 隐藏软键盘*/fun hideKeyboard(view: View?) {if (view == null)returnval manager: InputMethodManager =view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.hideSoftInputFromWindow(view.windowToken, 0)}/*** 强制隐藏软键盘* 谨慎使用,需要判断软键盘是否开启*/fun forceHideKeyboard() {object : Thread() {override fun run() {try {val inst = Instrumentation()inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK)} catch (e: Exception) {e.printStackTrace()}}}.start()}/*** 切换软键盘*/fun toggleSoftInput(view: View?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.toggleSoftInput(0, 0)}
}
Android EditText与软键盘相关推荐
- Android EditText将软键盘的回车改为搜索,并监听
需求为: 当用户在界面内点击输入框,弹出键盘,键盘右下角示意为"搜索"按钮 当用户输入内容后,点击搜索按钮将进行关键词搜索 当用户没有输入内容点击搜索按钮,将收起键盘,回到界面(这 ...
- android edittext 把软键盘确认键改为搜索键
EditText搜索时没有搜索按钮,而是调用软件盘上的按钮,这时便需要改变软键盘的确定键为"搜索",并监听该键的按钮. 在xml文件中添加: android:imeOptions= ...
- 全面解析Android EditText以及软键盘的设置
原创文章,转载请注明出处:http://blog.csdn.net/myth13141314/article/details/54972337 软键盘的行为可以通过修改对应Activity的andro ...
- 对EditText的软键盘进行监听-----android:imeOptions
在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...
- Android PopupWindow 隐藏软键盘的方法
今天,简单讲讲android里 PopupWindow 弹出在底部,被软键盘遮挡的问题. 之前,自己写一个PopupWindow 弹出在底部,可是如果软键盘显示时弹出,软键盘会遮挡PopupWi ...
- android 键盘将底部视图顶起,android 弹出软键盘将底部视图顶起问题
今天要做一个搜索功能,搜索界面采用AutoCompleteTextView做搜索条,然后下面用listview来显示搜索结果,而我的主界面是在底 部用tab做了一个主界面导航,其中有一个搜索按钮,因为 ...
- Android 文本,软键盘使用指南
目录 TextView的基本使用 TextView的基本属性 图文混排的三种实现方式 drawableTop,DrawableBottom,DrawableLeft,drawableRight 通过I ...
- Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0
Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0 源码地址:GitHub: https://github.com/SValence/SafeKeyboard 注意 ...
- Android 监听软键盘的高度并解决其覆盖输入框的问题
1.前言 在某些项目中,我们常常需要自定义一个输入框,软键盘弹出时就把输入框顶上去,关闭时输入框再回到原位(比如下方的效果图,实际上各种 App 中的聊天界面和发布评论的界面大体都是这样).在这个过程 ...
- Android EditText默认数字键盘,能输入字母和数字
Android EditText默认数字键盘,能输入字母和数字,使用inputType="number"不管用的,下面的方法管用默认是数字键盘,但是返回可到字母键盘: 布局: &l ...
最新文章
- playsound函数Linux使用,函数PlaySound和sndPlaySound的用法
- Activity的启动模式与flag详解
- 分页数据的新展示方式---瀑布流
- QT 32位程序Debug模式发布问题
- 开源开放 | 一个用于知识驱动的零样本学习研究的开源数据集KZSL(CCKS2021)
- $.extend()和(function($){….})(jQuery)
- 外贸网站建设(转自xmfish)
- (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)
- js ---- 数组操作
- 蓝桥杯 ADV-91 算法提高 素数判断
- [bzoj 1861][zjoi2006] 书架
- java程序与数据库连接_将Java程序与数据库进行连接的操作方法
- 【2016年第1期】关于我国农业大数据中心建设的设想
- 虚幻4随笔(安装与界面说明)
- python 实现A星算法
- 什么是PID,PID的作用。
- 计算机系统组成习题检测及答案
- IFIX数据写入html,iFIX常见问题问答.doc
- java用下拉框实现出生日期_纯JS实现出生日期[年月日]下拉菜单效果
- 读懂 TS 中联合类型和交叉类型的含义